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