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

在工作中遇到的一些关于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

 

 

 

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐