您的位置:

SQL中的charindex

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