sql中通配符 sql怎么在多列查找

A[%] 查找 A% 字符
A[_] 查找 A_ 字符

如果没有 []
A%A开头的任意字符串
A_A开头的任意2个长度的字符串

% 表示任意个长度字符, 可以是没有字符
_ 表示任意一个字符

[] 方括号表示, 查询内部指定的字符
A[1, 2, 3] 表示查 A1 或 A2 或A3
A[0-9, a-z] 表示查 A0, A1...A9 或 Aa, Ab...Az之间的
A[^0-9]表示查 以A开头, 长度为2, 后不能是数字的任意字符
A[0-9][a-z] 表示查 以A开头, 后面是一个数字, 一个小写字母

这些是特殊字符, 需要转义
LIKE '0%%' ESCAPE '' -- 转义字符, 紧跟后面的做为字符处理,不做通配字符

添加数据的 CHECK 约束
[%] 表示 [任意个字符]
sql中通配符 sql怎么在多列查找
[_] 表示 [任意一个字符]

insert into A (a1,a2) values('A[sdkj]','A[a]')
insert into A (a1,a2) values('A[]','A[1]')

-- 这个也能添加, % 和_ 也算字符
insert into A (a1,a2) values('A[%]','A[_]')

==========================================================================================

阐述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"'
union all select '113'
union all select '123'
go
select * from a WHERE name LIKE '%/3' ESCAPE '/'--指定用'/'符号来说明跟在其后面的通配符字符为普能字符。(第二个%是字符不是通配符来的)
go
drop table a

结果为:
name
----------
113
123

总结:

%:匹配零个及多个任意字符; _:与任意单字符匹配; []:匹配一个范围; [^]:排除一个范围

SymbolMeaning
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�' 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 '�CDE' like '�CDE' escape ''select 1 where '�CDE' like '!�CDE' escape '!'select 1 where '�CDE' like '#�CDE' escape '#'select 1 where '�CDE' like '@�CDE' 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 ''

  

爱华网本文地址 » http://www.aihuau.com/a/25101012/107623.html

更多阅读

Word教程-在Word中如何使用通配符快速查找 word快速查找

Word教程-在Word中如何使用通配符快速查找——简介若要想在Word中使用通配符来调整搜索条件,依次单击“编辑→查找”,或者可以按组合键Ctrl+H弹出“查找和替换”对话窗口进行设置,下面我跟大家说说在Word中如何使用通配

Excel技巧之——巧用含通配符的查找 word查找替换通配符

Excel技巧之——巧用含通配符的查找——简介在使用excel中,不但可以根据用户输入的内容进行精确查找,还可以使用包含通配符的模糊查找,在excel中所支持的通配符包括两个:星号*和问号?,其中*可代替任意数目的字符,可以是单个字符也可以是多

OSPF中的通配符掩码 ospf反掩码

配置中的两个基本元素:1、启用 OSPF2、配置 OSPF 地区激活命令:Router(config)#router ospf ? <1-65535>OSPF 使用 1-65535 范围内的数来识别进程的 ID。不同的 OSPF 路由器不需要使用相同的进程 ID进行通信。这个数字没有实际

1. bash简介及通配符、扩展通配符 bash for i in 1 100

当我们执行一些命令的时候,很多的命令是由bash提供的。如果我们想知道某个命令是否是由bash内置的命令的话,我们可以使用typebash内置命令:bash 通配符 扩展通配符 rhce学习bash linux shell shell编程 shell脚本typefcalias如果想让我

声明:《sql中通配符 sql怎么在多列查找》为网友海不会哭分享!如侵犯到您的合法权益请联系我们删除