前提,MS SQL的通配符含义:
序号 |
通配符 |
含义 |
示例 |
1 |
% |
包含零个或多个字符的任意字符串。 |
WHERE title LIKE '%computer%' 将查找在书名中任意位置包含单词"computer" 的所有书名。 |
2 |
_ |
任何单个字符。 |
WHERE au_fname LIKE '_ean' 将查找以 ean 结尾的所有 4 个字母的名字(Dean、Sean 等)。
|
3 |
[ ] |
指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符。 |
WHERE au_lname LIKE '[C-P]arsen' 将查找以 arsen 结尾并且以介于 C 与 P 之间的任何单个字符开始的作者姓氏,例如 Carsen、Larsen、Karsen 等。在范围搜索中,范围包含的字符可能因排序规则的排序规则而异。
|
4 |
[^] |
不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符。 |
WHERE au_lname LIKE 'de[^l]%' 将查找以 de 开始并且其后的字母不为 l 的所有作者的姓氏。 |
定义测试表:
然后,我们进行逐个分析
1、我们知道,对于字符串,其开始和结束标识符为单引号,如果字符串里面有单引号,我们可以直接使用两个单引号来替代。
形如:空串 '', 单引号 '''', 字符串 'abAB#中国字符串', 包含单引号的串 'abAB#中国''字符串'.
2、'_'、 '%'和'['
(1) '_'匹配单个字符,例:
select * from EscapePattern where value like '_SQL' --查找四个字符,并且以'SQL'结束的记录
结果为:aSQL 中SQL
其中like语句还可以这样写:
'SQL_' 查找四个字符,并且以'SQL'开始的记录,结果:SQLa SQL中
'SQ_L' 查找四个字符,并且以'SQ'开始,以'L'结束的记录,结果:SQaL SQ中L
'_SQL_' 查找五个字符,中间的三个字符是'SQL',结果:aSQLa 中SQL中
'_SQ_L_' 查找六个字符,第二个、第三个和第五个字符分别为'S'、'Q'和'L'的记录 aSQaLa 中SQ中L中
其中'_'可以任意多个,无限制(当然别超过字符串的显示最大值,肯定会报错)。
(2) '%'匹配任意多个字符(>=0),使用方法同'_',主要是不限制字符串的个数,例:
select * from EscapePattern where value like '%SQL' -- 查找大于或等于3个字符,并以'SQL'结尾的记录
其中like的其他写法:
'SQL%' 查找大于等于3个字符,并且以'SQL'开始的记录
'SQ%L' 查找大于等于3个字符,并且以'SQ'开始,以'L'结束的记录
'%SQL%' 查找大于等于3个字符,必须包含'SQL'的记录
'%SQ%L%' 查找大于等于3个字符,必须包含'SQ'和'L',并且'SQ'在'L'前面的记录
另外,如果要查询'_'或'%',可以使用'[]'包含起来,如'[_]'和'[%]',这样,利用匹配样式,将其转换为普通字符。
如select * from EscapePattern where value like '%[_]%'结果为:中国_CN,即包含'_'的记录。
(3) '['因为是模式匹配的开始字符,如果是查询此字面,而不是用在模式匹配时,也需要进行处理,使其成为普通字符'[[]':如'['-->'[[]', '[[' --> '[[][[]'
3、在模式匹配(Pattern)中使用的字符:'^'、'-',']',它们本来就包含在'[]'中,在外部,不需要进行处理,同普通字符,但如果在模式匹配里面,则需要引用其方法来进行查询,如果在Like里面,需要引入Escape进行转义:
如:
select * from EscapePattern where value like 'a[/^]%' escape '/' -- 查询以'a^'开始的所有记录。
select * from EscapePattern where value like '%[/]]%' escape '/' -- 查询所有包含']'字符的记录
select * from EscapePattern where value like '%[/-]%' escape '/' -- 查询所有包含'-'字符的记录
这样一切都可以解决问题!
但是,另外一个问题出现了。如果只使用
PATINDEX ( '%pattern%' , expression ),无法使用Escape
如果有如果模式匹配里面使用了'-'、'^'或']',可以这样来做:
(1) 对于'-',可以放在最后或最前面如'[a-z-]'或'[-a]',不在中间充当连接符(如数字[0-9],小写字符[a-z]中的连接符)
(2) 对于'^',由于其只在模式匹配最开始有效,形如'[XX^XX]',所以,只要不放在最开始,什么地方都可以。
(3) 对于']', 可以将其不放在模式匹配里面,也可以将其替换成其他字符,然后再转换回来。
下面是一些比较有用的pattern,如果你知道正则表达式,那么就相当容易理解:
小写字母[a-z] 大写字母[A-Z] 数字[0-9] 汉字[吖-咗]
非小写字母[^a-z] 非大写字母[^A-Z] 非数字[^0-9] 非汉字[^吖-咗]
分享到:
相关推荐
例如,Oracle数据库还支持`BETWEEN`和`INSTR`函数来实现类似的功能,而MySQL支持`RLIKE`操作符,可以使用正则表达式进行更复杂的模式匹配。 7. **效率优化**: 当你确实需要使用通配符时,尝试把它们放在查询的...
需要注意的是,虽然 SQL 通配符提供了很大的灵活性,但过度使用可能会导致查询性能下降,特别是当通配符出现在搜索模式的开始时,因为数据库可能无法有效利用索引来优化查询。因此,在设计查询时,应尽量减少对...
ESCAPE子句的模式匹配可搜索包含一个或多个特殊通配符的字符串。例如,customers数据库中的discounts表可能存储含百分号(%)的折扣值。若要搜索作为字符而不是通配符的百分号,必须提供ESCAPE关键字和转义符。例如...
`LIKE`允许使用通配符进行模式匹配,从而可以灵活地处理不完全确定的查询条件。常用的通配符包括: - `%`:表示任意数量的字符(包括零个字符)。 - `_`:表示单个字符。 在实际应用中,`LIKE`通常与`%`结合使用,...
在SQL(Structured Query Language)中,通配符是用于模糊搜索和模式匹配的关键元素,使得用户可以在不完全知道确切数据的情况下查找数据。SQL通配符主要用于`LIKE`、`GLOB`、`REGEXP`等操作符中,帮助我们进行更...
在SQL Server 2005中,通配符是用于数据检索时匹配字符串模式的关键工具。这些通配符使得查询可以更加灵活,帮助用户在不完全知道确切信息的情况下找到匹配的数据。以下是SQL Server 2005中常用的通配符及其具体含义...
SQL 通配符是SQL查询中非常实用的功能,它们允许用户使用模糊匹配来搜索数据库中的数据。在SQL中,主要有三种通配符:`%`、`_`以及字符列表`[charlist]`(在MySQL中还有正则表达式`REGEXP`)。下面将分别对这些...
在SQL中,`LIKE`操作符是用于在查询中执行模糊匹配的关键工具,它结合了通配符来帮助用户寻找符合特定模式的数据。本节主要介绍了三种常用的通配符:百分号`%`、下划线`_`以及方括号`[]`。 6.1 `LIKE`操作符 `LIKE`...
MySQL 通配符是 SQL 模式匹配的一种类型,允许用户使用特殊字符来匹配数据库中的数据。 MySQL 通配符有两种类型:一种是使用“_”匹配任何单个字符,一种是使用“%”匹配任意数目字符(包括零个字符)。 使用 MySQL...
在SQL查询中,模糊查询是一种非常实用的技术,它允许我们搜索数据库中与特定模式匹配的数据。在本主题中,我们将深入探讨"sql正宗模糊查询",特别是如何模仿百度搜索引擎的关键字密度排序查询,同时理解不一定要词组...
通配符类允许开发人员比较两个字符串是否相等,并支持以与 SQL 使用字符相同的方式处理 '*' 和 '%' 字符。 '*' 将匹配零个或多个字符,而 '%' 将匹配任何一个字符。 此类在您想要比较不驻留在数据库中的两个字符串的...
在SQL Server中,通配符是用于模糊查询的关键字,它们可以帮助你在不知道确切数据的情况下...在SQL Server中,灵活运用通配符和相关函数,可以有效地处理各种模糊匹配和模式查找的问题,从而优化数据库操作和数据提取。
文章解释了 LIKE 子句的基本语法,包括如何在 SELECT 语句中使用 LIKE 进行模式匹配,以及如何结合 AND 或 OR 指定多个条件。此外,还展示了如何在 DELETE 和 UPDATE 语句中使用 LIKE 子句。文中通过多个实例说明了...
包括 1、全匹配查找字符串 2、模糊查找字符串 CHARINDEX 和 PATINDEX 函数都返回指定模式的开始位置。PATINDEX 可使用通配符,而 CHARINDEX 不可以。 这两个函数都带有2个参数: 1 希望获取其位置的模式。使用 ...
在SQL(Structured Query Language)中,模糊查询是一种非常重要的功能,它允许我们使用通配符来匹配不完全或不确定的数据。这种查询方式在处理大量数据时尤其有用,比如在搜索关键词、查找类似记录或者进行数据清洗...
`LIKE`语句在SQL查询中用于模式匹配,主要涉及以下两个通配符: - `%`:代表任意数量的字符,包括零个字符。 - `_`:代表单个任意字符。 例如,查询所有名字以“John”开头的客户: ```sql SELECT * FROM ...
通配符是编程和数据库查询中非常常用的一种特殊符号,它们允许我们进行模糊匹配和模式查找,极大地提高了数据检索的灵活性。以下是对标题和描述中提及的通配符及其使用方法的详细说明: 1. `%` (百分号):这个...
MySQL 提供了两种模式匹配方式:SQL 模式和正则表达式模式。SQL 模式允许使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL 中,SQL 的模式缺省是忽略大小写的。 SQL 模式 在 SQL ...