一、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”出现的位置。