PATINDEX
返回指定運算式中某模式第一次出現的起始位置;如果在全部有效文本和字元資料類型中沒有找到該模式,則返回零。
文法
PATINDEX ( '%pattern%' , expression )
參數
pattern
一個字串。可以使用萬用字元,但 pattern 之前和之後必須有 % 字元(搜尋第一個和最後一個字元時除外)。pattern 是短字元資料類型類別的運算式。
expression
一個運算式,通常為要在其中搜尋指定模式的列,expression 為字串資料型別類別。
傳回型別
int
注釋
PATINDEX 對 text 資料類型很有用;除 IS NULL、IS NOT NULL 和 LIKE(這些是 Where 子句中對 text 類型有效僅有的其它比較運算)外,PATINDEX 也可用於 Where 子句中。
-----------------------------------------
例一:
找出Northwind.dbo.Categories表中Description欄位中是包含單詞“Bread”或“bread”的所有記錄,那麼選擇語句就可能是這樣:
Select Description from Northwind.dbo.Categories
Where patindex('%[b,B]read%',description) > 0
PATINDEX 中可以使用萬用字元來確定大寫和小寫“b”
例二:
找出Northwind.dbo.Categories表中Description欄位中是包含單詞“Bread”或“bread”,且第二子字母不是“e”的記錄。
select Description from Northwind.dbo.Categories
where patindex('%[b,B]read%',description) > 0 and patindex('_[^e]%',description) = 1
通過在條件陳述式中增加一個使用^萬用字元的PATINDEX函數,我們可以過濾掉“Dessert, candies, and sweet breads”這條記錄。上面的查詢結果只有一條記錄。
PATINDEX與CHARINDEX
PATINDEX函數支援使用萬用字元,可以用在很多有變化的尋找中。而CHARINDEX不可以。根據你自己不同的情況,這兩個函數對你在SQL Server中的字串的搜尋、控制、分析很有協助。