模式匹配及模糊查询
数据查询是数据库的核心功能之一,其中使用like关键字可以实现待查询字段与指定的模式进行匹配查询。本文主要介绍SQL Server中用于实现LIKE模糊查询相关模式匹配的基本概念及对部分典型模式匹配进行说明。
模式匹配主要用于实现对字符串进行操作。其基本原理是通过使用一个模式字符串来匹配符合条件的字符串。在T-SQL语言Where条件语句对记录集进行筛选的过程中通过使用LIKE关键字实现模糊查询,即字符串的匹配操作,其匹配的规则,我们可以理解为模式匹配。模式匹配的核心在于规则本身,相关说明如下:
1、通配符
通配符是一类特殊的字符,用来替代待匹配字符串中的字符,是构成匹配规则pattern的基本元素之一。T-SQL中主要通配符包括以下4类:
%:表示任意长度字符串;
_:表示长度为1的任意字符;
[charlist]:匹配字符列表中的任一字符,如[a-z],[0-9];
[^charlist]:匹配未在字符列表中出现的任一字符;
2、匹配规则
匹配规则是在使用通配符的情况下,确定目标字符串是否与规则一致的过程,结合实际使用情况归纳主要规则如下:
(1)仅匹配长度,对内容无要求
如果仅需要匹配字符串的长度,而对内容无要求,我们可以使用"_"进行匹配,按照通配符定义,该符号指一位任意字符。
如要求目标字符串为6位,可以定义匹配规则为:'[______]',包括6个_。
(2)即规定长度又需满足内容要求
很多情况下需要对字段长度及字符串内容与指定要求一致进行判断,则可以通过使用_与[]等通配符的组合实现规则的编写。
如查询要求满足字符串长度为10,其中前4位为数字,则可以编写规则为:'[0-9][0-9][0-9][0-9]______',包括4个[]与6个_构成10位。
(3)子串匹配要求
子串匹配要求只需要检测待匹配的字符串中包含指定的子串,可以通过使用%通配符实现规则的编写。
如查找名字中包含王的字符串,则规则可以编写为:'%王%';如要求查找王姓的姓名,则编写规则为'王%'。
(4)特殊格式要求
特殊格式要求主要根据数据库所存储的数据类型特点而定义的特殊格式,主要格式包括电话号码、银行卡号、身份证号、电子邮件地址、网址URL等,这些数据本身具有对应的格式,因此在进行模糊查询时可以综合使用4类通配符,构建符合要求的匹配规则。部分模糊匹配规则如下:
1、电话号码匹配规则
电话号码主要由区号加号码所组成,长度一般为11为或者12为,其中区号与号码通过“-”进行连接。因此可以编写规则如下:
'[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
2、有效URL筛选规则
URL本身有固定格式,因此可以直接编写规则,要求字符串中包含指定的字符即可,编写规则如下:
'%[A-Z0-9] [.] [A-Z0-9]%[A-Z0-9] [/] [A-Z0-9]%'
3、电子邮件规则
电子邮件格式规定,其中包含了指定的特殊字符,因此编写规则如下:
'%[A-Z0-9][@][A-Z0-9]%[.][A-Z0-9]%'
综上所述,我们可以通过通配符的组合,定义出模糊查询规则,通过使用模糊匹配实现比直接使用where 与and效率更高的记录筛选。