一、charindex概述
SQL中的charindex函數用於查找某個字元串在另一個字元串中第一次出現的位置,如果未找到則返回0。
charindex函數的語法如下:
charindex(search_string, source_string [, start_location])
其中,search_string是要查找的字元串,source_string是被查找的字元串,start_location是查找的起始位置,可省略。如果省略start_location,則從source_string的開頭開始查找。如果指定了start_location,則從指定位置開始查找。
二、使用charindex函數
以下是一個使用charindex函數的例子,查找一個字元串是否包含另一個字元串。
SELECT name FROM users WHERE charindex('john', name) > 0;
以上語句將返回所有名字中包含「john」的用戶。
三、查找多個字元串
charindex函數還可以查找多個字元串。以下是一個查找多個字元串的例子,查找一個字元串是否包含多個單詞。
SELECT name FROM users WHERE charindex('john', name) > 0 AND charindex('smith', name) > 0;
以上語句將返回所有名字中同時包含「john」和「smith」的用戶。
四、區分大小寫
charindex函數默認是不區分大小寫的。如果需要區分大小寫,則需要使用binary collation。
SELECT name FROM users WHERE charindex('JOHN', name COLLATE Latin1_General_BIN) > 0;
以上語句將返回所有名字中包含「JOHN」的用戶,但不會返回包含「john」的用戶。
五、查找多個位置
如果要查找所有出現位置,可以使用循環和substring等函數。
DECLARE @string varchar(100) = 'hello world'; DECLARE @search_string varchar(10) = 'l'; DECLARE @pos int = 0; WHILE @pos > -1 BEGIN SET @pos = CHARINDEX(@search_string, @string, @pos + 1); IF @pos > -1 SELECT @pos as position; END
以上語句將返回所有「l」出現的位置。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/246767.html