T-SQL :LIKE與萬用字元

SQL透過WHERE與LIKE的組合,達到模糊比對的目的,語法類似底下這個樣子:

SELECT
 [Name]
FROM Production.Product
WHERE Name LIKE '%Ball%'

其中接在LIKE運算子後面的,是用來作為糢糊比對的條件式,它的意義是說,只要Name這個欄位裏面的值,包含了一個Ball的單字,就將其資料找出來。

BB Ball Bearing
Bearing Ball
Headset Ball Bearings

「%」是比較通用的萬用字元,它表示任何的字元,另外還有一個以底線表示的萬用字元「_」,它表示一個單一字元,如果要比對的模糊條件,只允許單一字元,則使用這個底線來作條件值比較好。

SELECT
[Name]
FROM Production.Product
WHERE Name LIKE '_hainring%'


這段語法所回傳的結果如下:

Chainring
Chainring Bolts
Chainring Nut

只要第二個字元開始是hainring的資料,都會被找回來,注意,在此之前,只能有一個字元,否則同樣不符合條件。

如果我們進一步改成如下的陳述式:

SELECT
Name
FROM Production.Product
WHERE Name LIKE '_hainrin_'


回傳的將會是單一的「Chainring」,因為底線只允許最後出現一個單一字元。

2 則留言:

Cloud 提到...

效能問題需要考量, 用 like 若在資料量多的情況下, 很容易有效能瓶頸.

康廷數位 提到...

這的確是,謝謝提供意見。