使用通配符进行不精确匹配
如果您不知道您正在寻找的确切单词或短语,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支持多种通配符表达式:
- %通配符匹配任何类型的零个或多个字符,并可用于在模式之前和之后定义通配符。 如果您熟悉DOS模式匹配,则它与该语法中的*通配符相同。
- _通配符完全匹配任何类型的一个字符。 这相当于? DOS模式匹配中的通配符。
- 通过将它们括在方括号中指定一个字符列表。 例如,通配符[aeiou]匹配任何元音。
- 将范围括在方括号中指定一个字符范围。 例如,通配符[am]匹配字母表前半部分的任何字母。
- 通过在开放方括号内立即包含克拉字符来取消一系列字符。 例如, [^ aeiou]匹配任何非元音字符,而[^ am]匹配任何不在字母表前半部分的字符。
将通配符组合为复杂模式
将这些通配符组合成复杂模式以执行更高级的查询。 例如,假设您需要构建名称以字母表前半部分开头的所有员工列表,但不要以元音结尾。 您可以使用以下查询:
SELECT * FROM employees WHERE last_name LIKE'[am]%[^ aeiou]'同样,您可以通过使用_ pattern的四个实例来构造姓氏正好包含四个字符的所有员工的列表:
SELECT * FROM employees WHERE last_name LIKE'____'如您所知,使用SQL模式匹配功能为数据库用户提供了超越简单文本查询和执行高级搜索操作的能力。