SQL查询中的模式匹配

使用通配符进行不精确匹配

如果您不知道您正在寻找的确切单词或短语,SQL模式匹配允许您搜索数据中的模式。 这种SQL查询使用通配符来匹配模式,而不是完全指定它。 例如,可以使用通配符“C%”来匹配任何以大写字母C开头的字符串。

使用LIKE运算符

要在SQL查询中使用通配符表达式,请在WHERE子句中使用LIKE运算符,并将该模式​​放在单引号内。

使用%通配符执行简单搜索

要搜索姓名以字母C开头的数据库中的任何员工,请使用以下Transact-SQL语句:

SELECT * FROM employees WHERE last_name LIKE'C%'

使用NOT关键字省略模式

使用NOT关键字选择与模式不匹配的记录。 例如,此查询返回名称最后不以C开头的所有记录:

SELECT * FROM employees where last_name not like'C%'

使用%通配符两次匹配一个模式

使用通配符的两个实例来匹配任何地方的特定模式。 此示例返回包含姓氏中任何位置的C的所有记录:

SELECT * FROM employees WHERE last_name LIKE'%C%'

在特定位置查找模式匹配

使用_通配符在特定位置返回数据。 此示例仅在C出现在姓氏列的第三位时才匹配:

SELECT * FROM employees WHERE last_name LIKE'_ _C%'

Transact SQL中支持的通配符表达式

Transact SQL支持多种通配符表达式:

将通配符组合为复杂模式

将这些通配符组合成复杂模式以执行更高级的查询。 例如,假设您需要构建名称以字母表前半部分开头的所有员工列表,但不要以元音结尾。 您可以使用以下查询:

SELECT * FROM employees WHERE last_name LIKE'[am]%[^ aeiou]'

同样,您可以通过使用_ pattern的四个实例来构造姓氏正好包含四个字符的所有员工的列表:

SELECT * FROM employees WHERE last_name LIKE'____'

如您所知,使用SQL模式匹配功能为数据库用户提供了超越简单文本查询和执行高级搜索操作的能力。