LIKE谓词
T-SQL提供了一个LIKE谓词,用于检查字符串是否能够匹配指定的模式。在前面介绍的PATINDEX函数中已经使用了类似的模式。接下来的这节将介绍模式中使用的通配符(wildcard),并演示它们的用法。
%(百分号)通配符
百分号代表任意长度的字符串,包括空字符串。例如,以下查询返回姓氏(last name)以字符'D'开头的所有雇员:
2 FROM HR.Employees
3 WHERE lastname LIKE N'D%';
_(下划线)通配符
下划线代表任意单个字符。例如,以下查询返回姓氏(last name)第二个字符为'e'的所有雇员:
2 FROM HR.Employees
3 WHERE lastname LIKE N'_e%';
[<字符列>]通配符
方括号中包含一列字符(例如'[ABC]'),表示必须匹配指定字符中的一个字符。例如,以下查询返回姓氏(last name)以字符'A'、'B'或'C'开头的所有雇员:
2 FROM HR.Employees
3 WHERE lastname LIKE N'[ABC]%';
[<字符>-<字符>]通配符
方括号中包含一个字符范围(例如'[A-E]'),表示必须匹配指定范围内的一个字符。例如,以下查询返回姓氏(last name)以字符'A'到'E'开头的所有雇员:
2 FROM HR.Employees
3 WHERE lastname LIKE N'[A-E]%';
[^<字符列或范围>]通配符
方括号中包含一个插入符(^),后面跟着一个字符列或范围(例如'[^A-E]'),表示不属于指定字符列或范围内的任意单个字符。例如,以下查询返回姓氏(last name)不是以字符'A'到'E'开头的所有雇员:
2 FROM HR.Employees
3 WHERE lastname LIKE N'[^A-E]%';
ESCAPE(转义)字符
如果想搜索包含特殊通配符的字符串(例如'%'、'_'、'['、']'),则必须使用转义字符。指定一个确保不会在数据中出现的字符作为转义字符,把它放在待查找的字符串前面,并紧接着模式字符串,在ESCAPE关键字后面指定该转义字符。例如,要检查lastname的列中是否包含下划线,可以使用下列代码进行查询:
2 FROM HR.Employees
3 WHERE lastname LIKE'%!_%'ESCAPE'!';
另外,对于通配符'%'、'_'、和'['(左方括号),可以把它们放在方括号内,而不必使用转义字符。例如,除了使用lastname LIKE '%!_%' ESCAPE '!'以外,还可以使用lastname LIKE '%[_]%'。