CHARINDEX 函数
返回指定子字符串在字符串中的位置。
有关类似的函数,请参阅POSITION 函数和STRPOS 函数。
语法
CHARINDEX( substring, string )
参数
- substring
-
要在 string 中搜索的子字符串。
- string
-
要搜索的字符串或列。
返回类型
- INTEGER
-
CHARINDEX 函数返回与子字符串的位置对应的
INTEGER
(从 1 开始,而不是从 0 开始)。此位置基于字符数而不是字节数,这是为了将多字节字符作为单字符计数。如果在字符串未找到子字符串,CHARINDEX 将返回0
。
示例
要显示字符串 fish
在单词 dog
中的位置,请使用以下示例。
SELECT CHARINDEX('fish', 'dog');
+-----------+ | charindex | +-----------+ | 0 | +-----------+
要显示字符串 fish
在单词 dogfish
中的位置,请使用以下示例。
SELECT CHARINDEX('fish', 'dogfish');
+-----------+ | charindex | +-----------+ | 4 | +-----------+
以下示例使用 TICKIT 示例数据库中的 SALES 表。有关更多信息,请参阅 示例数据库。
要返回 SALES 表中佣金超过 999.00 的不同销售交易的数量,请使用以下示例。此命令通过检查小数点距离佣金值开头是否超过 4 位数来计算大于 999.00 的佣金。
SELECT DISTINCT CHARINDEX('.', commission), COUNT (CHARINDEX('.', commission)) FROM sales WHERE CHARINDEX('.', commission) > 4 GROUP BY CHARINDEX('.', commission) ORDER BY 1,2;
+-----------+-------+ | charindex | count | +-----------+-------+ | 5 | 629 | +-----------+-------+