sqllike模糊查询,sql模糊查询like语句
sql语句查询,多字段like模糊查询优化
1、多字段like模糊查询优化:
最常见的写法:
where a like '%xx%' or b like '%xx%' or c like '%xx%';
这种写法查询效率低,经过调查,下面的方法可以替代,并且效率高:
2、如果like的关键字相同:
where instr(nvl(a, '')||nvl(b,'')||nvl(c,''), 'xx') 0
把要模糊查询的字段先拼接起来,拼接时需要把null转成‘’,否则只要有一个字段值是空,整个拼接的字符串都成空了, 然后用instr 函数去过滤;
3、如果like的关键字不同:
where instr(a, 'xx') 0 or instr(b, 'yy') 0 or instr(c, 'zz') 0
经过测试,这两种方法都比like效率要高;
SQL之模糊查询的四种用法
MySql 使用 like关键字 进行模糊查询,like关键字 通常用在 where条件查询,like关键字 通常配合 %、_、[ ]、[^ ] 使用。
%表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
注意:只能查询连续的文字。【比如“深圳市福田区”可以查询,“深圳市区”查询不出来】
注意:此语句没有那么灵活,比较适用于固定的某个文字的查询。
注意:此语句比较灵活,可以查询相隔几个文字,比较实用。【比如“深圳市福田区小学”可以查询,“深圳市福区小”也可以查询】
表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。
表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
sql server 模糊查询 like
注意
匹配的条件需要用 单引号 括起来。(单引号表示字符串,双引号表示对象的名字。)
输出中含有 % 名字:
注意
1、% 匹配的字符区分大小写。
2、% 不会匹配为 null 的数据。
3、查找以 F 开头 y 结尾的数据:
如果某一个数据在 y 后面还多了一个空格,以上写法是查询不到这个数据的。正确的做法是先使用函数去掉空格再查询。
Sql模糊查询(like)区分大小写
1、查询小写字母相关数据
2、查询大写字母相关数据
问题:通过上面两条SQL语句,发现MySQL的like查询时不区分大小写的
解决方法(查询时指定区分大小写):在like后面加个 binary 就OK了,或者在查询字段前面加 binary
SQL模糊查询Like语句中可以用变量吗
sql的模糊查询like字句是可以的使用变量的,具体操作步骤如下:
1、首先我们需要在数据库中准备演示数据。
2、接下来就直接在select中运用like,最普遍的是和两个%搭配。
3、接着如果百分号放在like查询串的后面则代表后面的内容不限制。
4、然后如果将百分号放在like查询串的前面,则代表以什么结尾,前面的内容不限制。
5、另外like查询串中还可以使用下划线,代表占位符。
6、后如果like串中出现中括号则代表的是可选内容。
SQL LIKE模糊查询
--下面这个应该是可以的!
create
proc
procget
--[存储过程名]
@proc1
varchar(50),--这个是一定要存在的参数
@proc2
varchar(50),
@proc3
varchar(50)
as
--定义一个要执行的字符串语句
declare
@aa
varchar(200)
set
@aa
=
'select
*
from
TA
where
'
+
'[表中的列名]
like
'
+
'''%'
+
@proc1
+
'%'''
--组合要执行的语句
--如果参数为空,就加上字符空串,否则就加上相应的条件语句
set
@aa
=
@aa
+
case
when
@proc2
is
null
then
''
else
'
and
[表中列名]
like'+'''%'+@proc2+
'%'''
end
set
@aa
=
@aa
+
case
when
@proc3
is
null
then
''
else
'
and
[表中列名]
like'+'''%'+@proc3+
'%'''
end
--执行语句
exec(@aa)