sql模糊查询
发布网友
发布时间:2022-04-29 05:41
我来回答
共5个回答
热心网友
时间:2022-04-07 18:47
模糊查询即like的用法:如下
SQL对like 操作中的特殊字符处理方法:
SQL Server查询过程中,单引号 ' 是特殊字符,所以在查询的时候要转换成双单引号 '' 。
在like操作还有以下特殊字符:下划线_,百分号%,方括号[],尖号^。
其用途如下:
下划线:用于代替一个任意字符(相当于正则表达式中的 ? )
百分号:用于代替任意数目的任意字符(相当于正则表达式中的 * )
方括号:用于转义(事实上只有左方括号用于转义,右方括号使用最近优先原则匹配最近的左方括号)
尖号:用于排除一些字符进行匹配(这个与正则表达式中的一样)
以下是一些匹配的举例,需要说明的是,只有like操作才有这些特殊字符,=操作是没有的。
a_b... a[_]b%
a%b... a[%]b%
a[b... a[[]b%
a]b... a]b%
a[]b... a[[]]b%
a[^]b... a[[][^]]b%
a[^^]b... a[[][^][^]]b%
在实际进行处理的时候,对于=操作,我们一般只需要如此替换:
' -> ''
对于like操作,需要进行以下替换(注意顺序也很重要)
[ -> [[] (这个必须是第一个替换的!!)
% -> [%] (这里%是指希望匹配的字符本身包括的%而不是专门用于匹配的通配符)
_ -> [_]
^ -> [^]
3.SQL Like 通配符特殊用法:Escape
阐述Escape 的作用:
1.使用 ESCAPE 关键字定义转义符。在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。例如,要搜索在任意位置包含字符串 5% 的字符串,请使用:
WHERE ColumnA LIKE '%5/%%' ESCAPE '/'
但是在mysql中好像不能使用"\"。
2.ESCAPE 'escape_character'
允许在字符串中搜索通配符而不是将其作为通配符使用。escape_character 是放在通配符前表示此特殊用途的字符。
SELECT *
FROM finances
WHERE description LIKE 'gs_' ESCAPE 'S'
GO
意思就是:
比如,我们要搜索一个字符串 "g_" ,如果直接 like "g_",那么 "_"的作用就是通配符,而不是字符,结果,我们会查到比如 "ga","gb","gc",而不是我们需要的 "g_".
用 LIKE 'gs_' ESCAPE 'S' 's'表示特殊用法标志
3.create table a (name varchar(10))
go
insert into a select '11%22'
union all select '11%33'
union all select '12%33'
go
select * from a WHERE name LIKE '%/%33' ESCAPE '/' --指定用'/'符号来说明跟在其后面的通配符字符为普能字符。(第二个%是字符不是通配符来的)
go
drop table a
结果为:
name
----------
11%33
12%33
总结:
%:匹配零个及多个任意字符; _:与任意单字符匹配; []:匹配一个范围; [^]:排除一个范围
Symbol Meaning
like '5[%]' 5%
like '[_]n' _n
like '[a-cdf]' a, b, c, d, or f
like '[-acdf]' -, a, c, d, or f
like '[[]' [
like ']' ]
like 'abc[_]d%' abc_d and abc_de
like 'abc[def]' abcd, abce, and abcf
like '[^1-9]' 0
like '[^1-9b-z]' 0, a
对于字符串中出现的特殊字符:'%','[','[]', '_' 可以使用 '[]' 把它们包含起来,这样在匹配模式(pattern)中,它们就被当作普通字符对待了。
1. 用 like '[[]' 匹配特殊字符 '['
select 1 where '[ABCDE' like '[[]%'
2. 用 like ']' 匹配特殊字符 ']'
select 1 where ']ABCDE' like ']%'
3. 用 like '[[]]' 匹配特殊字符 '[]'
select 1 where '[]ABCDE' like '[[]]%%'
4. 用 like '[_]' 匹配特殊字符 '_'
select 1 where '_ABCDE' like '[_]%'
5. 用 like '[%]' 匹配特殊字符 '%'
select 1 where 'ABC%DE' like 'ABC[%]DE'
对于其他的特殊字符:'^', '-', ']' 因为它们本身在包含在 '[]' 中使用,所以需要用另外的方式来转义,于是就引入了 like 中的 escape 子句,另外值得注意的是:escape 可以转义所有的特殊字符。
select 1 where '^ABCDE' like '!^ABCDE' escape '!'
select 1 where '-ABCDE' like '!-ABCDE' escape '!'
select 1 where ']ABCDE' like '!]ABCDE' escape '!'
select 1 where '%ABCDE' like '\%ABCDE' escape '\'
select 1 where '%ABCDE' like '!%ABCDE' escape '!'
select 1 where '%ABCDE' like '#%ABCDE' escape '#'
select 1 where '%ABCDE' like '@%ABCDE' escape '@'
select 1 where '[ABCDE' like '![ABCDE' escape '!'
select 1 where ']ABCDE' like '!]ABCDE' escape '!'
规律就是用 escape 后面紧跟着的字符来做转义字符。 escape 后面的字符相当于 C 语言字符串中的转义字符 '\'。
最后,看一个更加复杂的匹配
select 1 where '[^A-Z]ABCDE' like '\[\^A\-Z\]%' escape '\'
热心网友
时间:2022-04-07 20:05
模糊查询内容丰富,用起来灵活随便。此处就写出其基本内容。
1,% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'
将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。
另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件
SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'
若使用 SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'
虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。
2,_ : 表示任意单个字符。匹配单个任意字符,它常用来*表达式的字符长度语句:
比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;
再比如 SELECT * FROM [user] WHERE u_name LIKE '三__';
只找出“三脚猫”这样name为三个字且第一个字是“三”的;
3,[ ] :表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
比如 SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'
将找出“张三”、“李三”、“王三”(而不是“张李王三”);
如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'
将找出“老1”、“老2”、……、“老9”;
4,[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
比如 SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'
将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;
SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';
将排除“老1”到“老4”,寻找“老5”、“老6”、……
由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”的语句无法正常实现,而把特殊字符用“[ ]”括起便可正常查询。
热心网友
时间:2022-04-07 21:40
SQL LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
from 树懒学堂-免费的数据学习平台
热心网友
时间:2022-04-07 23:31
like 模糊查询 %任意字符 _代表任意一个字符
where name1 like '李%' 姓李
where name1 like '_视%' 第二个字是视
where name1 like '%a%' 含有a字母
热心网友
时间:2022-04-08 01:39
查询name属性中包含abc的内容
select * from XXX where name like '%abc%'
关于SQL模糊查询日期时间的方法
在SQL查询中,日期时间的模糊搜索可以通过多种方式进行。首先,你可以使用`Convert`函数将时间类型转换为字符串,然后结合`Like`操作符进行匹配。例如,查询2017年6月30日及其前后的数据,可以写成:`SELECT*FROMtable1WHERECONVERT(varchar,yourtime,120)LIKE'2017-06-30%';`这样,任何在2017年6月30日...
sql语句模糊查询like用法
sql模糊查询1、首先,我们按下Ctrl+N创建一个SQL查询。然后,我们就能利用【createdatabase...】关键字创建。关键字写完后,我们写上新建的数据库名称。这时,就能点击分析查看是否存在错误。2、MySql使用like关键字进行模糊查询,like关键字通常用在where条件查询,like关键字通常配合%、_、[]、[^]使用。
SQL 怎么实现模糊查询?
1、首先需要开启数据库管理工具,打开SQL语言编写窗体。2、如果我们知道某字段的开头部分,我们可以用 like ‘xx%' select TOP 10 * from CK_ATE where Model like 'PSM24W%'。3、如果我们知道某字段的中间部分,可以使用 like ‘%xx%’select TOP 10 * from CK_ATE where Model like '%24W%'...
SQL 模糊查询
SQL模糊查询,使用like比较关键字,加上SQL里的通配符,请参考以下:1、LIKE'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。2、LIKE'%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。3、LIKE'%en%' 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green...
SQL 怎么实现模糊查询?
在要模糊掉的位置加上一个百分号%就可以实现模糊查询了。SQL结构:一:数据查询语言(DQL:Data Query Language):其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY...
在SQL中如何使用模糊查询?
1、写入下面代码。2、模糊查询SELECT * FROM student WHERE student.name LIKE '%涛涛%'。3、总数(有几个数据)SELECT COUNT(*) FROM student 。4、求和(表中所有的年龄相加),SELECT SUM(age) FROM student 。5、求平均(求年龄的平均)SELECT AVG(age) FROM student 。6、求最大(求表中...
关于SQL模糊查询日期时间的方法
1、Convert转成String,在用Like查询。select * from table1 where convert(varchar,yourtime,120) like '2017-06-30%'2、Between select * from table1 where yourtime between '2017-06-30 0:00:00' and '2017-06-30 24:59:59'";3、datediff()函数 select * from table1 where...
SQL模糊查询语句怎么写啊
1、假设表名为product,商品名为name,简界为remark.则可如下写:select [name],[remark] from product name like '%aa%' or remark like '%aa%'.注:上面单引号的aa你表模糊查询输入的字符。2、select * from (表名) where (搜索名称)like '%%' and id like '%(简介)%'3、用 Like ...
如何用MYSQL模糊查询···
SQL模糊查询的语法为 “SELECT column FROM table WHERE column LIKE ';pattern';”。SQL提供了四种匹配模式:1. % 表示任意0个或多个字符。如下语句:SELECT * FROM user WHERE name LIKE ';%三%';将会把name为“张三”,“三脚猫”,“唐三藏”等等有“三”的全找出来;2. _ 表示任意单个...
sql模糊查询语句该怎么写
使用 = 号精确匹配,使用like模糊匹配, like '%keyword%' 中,%匹配任意长度未知字符串,如果只有一个字符,则可以用下划线 _ 替代.1 比如我想查询包含 abc 的字符串,可以使用 like '%abc%'2 查询以abc开头的字符串, like 'abc%'3 以abc结尾的字符串, like '%abc'4 查询长度已经知道的字符串...