T-SQL LIKE运算符是SQL SELECT语句中最有用的附加功能之一。后者检索结果集,您可以使用等号运算符和WHERE子句轻松过滤结果以选择特定条件。但是,当您想要基于部分值选择行时该怎么办?这就是SQL LIKE语句发挥作用的地方,我将在本教程中向您展示如何使用它。
SQL LIKE语法
您可以在以下清单中看到LIKE运算符的基本语法:
- 首先,您提供要匹配的表达式。这通常是列名。
- 接下来,您可以选择指定NOT,以使此表达式适用于所有不匹配的条件。使用NOT LIKE条件不是使用LIKE运算符的最常见方式。
- 然后,您需要提供匹配的模式。这可以是字面量,也可以包含通配符,使匹配过程更加灵活。
- 这之后可以选择性地跟随一个转义字符,该字符可用于帮助搜索通配符。
- 如果任何参数不是字符串数据类型,SQL Server将把它转换为字符串数据类型。
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]
SQL LIKE和通配符
在我们深入细节之前,您应该知道SQL LIKE模式匹配可以包括常规字符以及通配符。通配符允许您选择与通配符模式匹配的特定字符串。
对于模式匹配,常规字符必须与字符串中指定的字符匹配。然而,通配符可以与字符串的任何片段匹配。使用通配符使得LIKE运算符比常规的相等(=和!=)字符串比较运算符更加灵活。
LIKE运算符接受四种不同类型的通配符。每个通配符执行不同的比较功能,您可以在下表中了解更多信息。
Wildcard character | Description |
% (percent sign) | Any string of zero or more characters. |
_ (underscore) | Any single character. |
[ ] | Any single character within the specified range [a-f] or set [abcdef]. |
[^] | Any single character not within the specified range [^a-f] or set [^abcdef]. |
如果match_expression与指定模式匹配,LIKE运算符将返回TRUE。让我们使用一些示例来向您展示如何使用SQL LIKE运算符与AdventureWorksLT2019示例数据库。
匹配多个通配符
% 通配符代表零个或多个字符。以下查询检索‘Person.Person’表中‘LastName’以字母‘A’开头的所有行。
USE AdventureWorksLT2019; SELECT FirstName, LastName FROM SalesLT.Customer WHERE LastName LIKE 'A%';

单字符通配符匹配
_ 通配符代表一个字符。以下示例查询检索‘SalesLT.Product’表中‘Name’为任意类型的四个字符后跟一个连字符的所有行。
USE AdventureWorksLT2019; SELECT ProductID, Name FROM SalesLT.Product WHERE Name LIKE '____-%';

一组字符的通配符匹配
[] 通配符代表指定范围或集合内的任意单个字符。以下 SQL 语句检索‘SalesLT.Product’表中所有以‘B’、‘C’或‘D’开头的行。
USE AdventureWorksLT2019; SELECT Name FROM SalesLT.Product WHERE Name LIKE '[BCD]%';

字符范围的通配符匹配
您还可以使用 LIKE 子句来支持范围搜索。此查询检索以‘ee’结尾且以字母‘C’和‘L’之间的任意单个字符开头的姓氏。
USE AdventureworksLT2019; SELECT LastName, FirstName FROM SalesLT.Customer WHERE LastName LIKE '[C-L]ee'

排除不属于指定集合的字符
[^] 通配符代表不在指定范围或集合内的任意单个字符。以下查询检索‘SalesLT.Product’表中所有‘Name’不以‘A’、‘B’或‘C’开头的行。
USE AdventureworksLT2019; SELECT Name FROM SalesLT.Product WHERE Name LIKE '[^ABC]%';

使用多个通配符匹配条件
LIKE子句也可以在单个查询中与多个通配符结合使用。以下查询使用多个SQL通配符来检索所有在’Person.Person’表中,’FirstName’包含字母’a’且’LastName’后跟任意字符再跟字母’l’的行。
USE AdventureworksLT2019; SELECT FirstName, LastName FROM SalesLT.Customer WHERE FirstName LIKE '%a%' AND LastName LIKE '_l%';

搜索通配符字符
通配符匹配为LIKE运算符增加了很多强大灵活性。但是,您可能想知道如何使用LIKE来匹配这些通配符字符中的一个。
为此,您可以将通配符字符放在方括号中,这样可以将通配符字符用作文字字符。您可以在以下表中看到一些示例。
Pattern | Search value |
LIKE ‘%2[%]%’ | 2% |
LIKE ‘%[_]m%’ | _m |
LIKE ‘%[ [ ]%’ | [ |
- 第一个示例匹配数字2后跟百分号通配符。
- 第二个示例匹配下划线字符后跟字母m。
- 第三个示例用于匹配方括号字符。

SQL LIKE语句增强了SQL SELECT语句
你现在应该更好地理解如何使用 SQL LIKE 运算符来增强 SQL SELECT 语句的功能和灵活性。在这里,我还向你展示了如何使用 LIKE 子句与各种通配符字符。在匹配多个通配符字符、执行单字符匹配、匹配一组字符或从结果中排除字符之间,你确实有很多可能性。
Source:
https://petri.com/sql-like/