iT邦幫忙

DAY 22
12

T-SQL 應用之美系列 第 22

在 WHERE 中,使用萬用字元:[]

在「命令提示字元」視窗或是 DOS 裡,可以使用萬用字元。在 T-SQL 裡面,同樣也有萬用字元可用,共計 5 種萬用字元可用在 SELECT 或 WHERE 子句,這次要介紹用於 WHERE 子句的萬用字元:[],它所代表的意義是指相符的字元
使用過「命令提示字元」視窗或是 DOS 萬用字元的邦友應該都知道,萬用字元是用來判斷特定字元字串是否符合我們所指定的模式。這個模式可以包含一般的字元與萬用字元,以便在比對的時候,可以找出與字元字串中,符合我們所指定的字元,先行過濾不必要的資料。

要在 WHERE 子句中,使用萬用字元,必須搭配 LIKE 關鍵字來執行字串比較,所以比對模式字串中的所有字元都很重要(包括開頭與結尾的空格),因為一不小心,所查詢出來的結果可能就不是我們所要的。

萬用字元 [] 是用來限定任何一個單一字元,要位於指定的範圍(例如:[a-f])或是集合(例如:[abcdef])之內。上述的這兩個例子,所代表的意思是相同的,也就是說,只要字母是位於 a~f 之間的,都符合我們的條件。

假設要找出 AdventureWorks 資料庫的 HumanResources.Employee 資料表中,職稱是以字元 a~f 開頭的資料記錄,就可以使用下面的程式碼:

USE AdventureWorks
GO

SELECT DISTINCT Title 職稱 FROM HumanResources.Employee
WHERE Title LIKE '[a-f]%'

上面的程式碼可以改用字母集合的方式:

USE AdventureWorks
GO

SELECT DISTINCT Title 職稱 FROM HumanResources.Employee
WHERE Title LIKE '[abcdef]%'

執行結果:

萬用字元 [] 是可以單獨使用的。例如,要找出職稱是 accountant 的資料記錄:

USE AdventureWorks
GO

SELECT DISTINCT Title 職稱 FROM HumanResources.Employee
WHERE Title LIKE '[a][c][c][o][u][n][t][a][n][t]'

執行結果:

只是上面這樣的寫法,就失去了使用萬用字元 [] 的好處了。一般是當所要查詢的字元,不是連續的情況下,才會單獨使用。例如,要找出 AdventureWorks 資料庫的 HumanResources.Employee 資料表中,職稱是以字元 e 或 s 開頭的資料記錄:

USE AdventureWorks
GO

SELECT DISTINCT Title 職稱 FROM HumanResources.Employee
WHERE Title LIKE '[es]%'

執行結果:

如果是要找出職稱不是以字元 e 或 s 開頭的資料記錄,只需在 LIKE 之前,加上 NOT 關鍵字:

USE AdventureWorks
GO

SELECT DISTINCT Title 職稱 FROM HumanResources.Employee
WHERE Title NOT LIKE '[es]%'

執行的部分結果畫面:


上一篇
在 WHERE 中,使用萬用字元:_
下一篇
在 SELECT 中,使用萬用字元 [^]
系列文
T-SQL 應用之美30

1 則留言

0
fillano
iT邦超人 1 級 ‧ 2008-09-23 17:07:27

[]、^等看起來都很像Regular Expression呢。

我要留言

立即登入留言