欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQL多条件模糊查询、IN 、自定义函数笔记(一)

程序员文章站 2022-03-26 11:44:57
在工作中遇到的一些关于Sql查询的问题整理记录,实现环境 SQLService 2014 一、对同一个字段,多个关键词的查询几种实现方式 基本语法: SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern 案例表(Tb ......

在工作中遇到的一些关于sql查询的问题整理记录,实现环境 sqlservice 2014

一、对同一个字段,多个关键词的查询几种实现方式

基本语法:

select column_name(s)
from table_name
where column_name like pattern

案例表(tbuser):

id lastname firstname
1 adams john
2 bush george
3 carter thomas

 

查询语句实现:

1、单个关键词模糊查询

        select * from tbuser where  lastname like '%d%'   

2、多个关键词查询

        实现一:select * 

from tbuser

where lastname like '%d%'   or   lastname like '%e%'   or   lastname like '%d%'  

 

实现二:select tbuser.lastname,temp.m

fromtbuser,(values('%a%'),('%b%'),('%c%')) as temp(m)

from tbuser.lastname like temp.m

 

实现三: select lastname 

from tbuser 

where lastname like any(array['%a%','%b%','%e%'])

 

实现四:select lastname  

from tbuser  

where lastname like  '%[a|b|e]%’

 

二、sql中in关键词的变相实现

当匹配数据数据比较多的时候,in需要逐一比对,效率低下,构造left join 结构会比较大的提高效率。

语法:

select column_name(s)
from table_name
where column_name in (value1,value2,...)

 实现一:

select *

from tbuser

where id in (1,2,3,4)

 

实现二、 

select  x from tbuser  u

left join  tbdetails as d on u.id=d.fkuserid

 where d.fkuserid is not null

 

实现三:

如果又一个数组需要进行in查询,可以如下实现,构造临时表进行inner join 查询

select u.*

from buser  u

inner join ( values('a'),('b'),('c'),('d'),('e') ) as  temp(m) on u.lastname=temp.m