使用通配符進行不精確匹配
如果您不知道您正在尋找的確切單詞或短語,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模式匹配功能為數據庫用戶提供了超越簡單文本查詢和執行高級搜索操作的能力。