基本内容
CHARINDEX 和 PATINDEX 函數都返回指定模式的開始位置。PATINDEX 可使用通配符,而 CHARINDEX 不可以。
這兩個函數都帶有2個參數:
1 希望獲取其位置的模式。使用 PATINDEX,模式是可以包含通配符的字面字符串。使用 CHARINDEX,模式是字面字符串(不能包含通配符)。
2 字符串值表達式(通常為列名)。
例如,查找模式"wonderful"在 titles 表中 notes 列的某一特定行中的開始位置。
USE pubs
SELECT CHARINDEX('wonderful', notes)
FROM titles
WHERE title_id = 'TC3218'
例如,使用通配符查找模式"candies"在 Categories 表中的 Description 列的任一行中的開始位置:
USE Northwind
GO
SELECT CategoryID, PATINDEX('%candies%', Description)AS POSITION
FROM Categories
WHERE PATINDEX('%candies%', Description) <> 0
特點
用PatIndex和CharIndex替代LIKE進行模糊查詢
使用Like 進行模糊查詢的速度很慢,尤其是多個 like的時候,更是如此。
而使用PatIndex和CharIndex相對來說速度快很多。
select * from table where a Like'%字符%'
select * from table where PatIndex('%字符%' , a) > 0
select * from table where CharIndex('字符' ,a) > 0
需要注意的是,PatIndex用來處理模糊的條件,比如%字符%
而CahrIndex則處理相對精确的條件。