MySQL POSITION() 函数返回给定字符串中指定子字符串第一次出现的位置。如果在给定字符串中未找到子字符串,则此函数返回 0。
此函数执行不区分大小写搜索。请注意,字符串中的第一个位置以 1 开头。
POSITION() 函数是 LOCATE() 函数。
语法
POSITION(substring, string, start_position)
参数
substring | 必填。 指定要在string中搜索的子字符串。 |
string | 必填。 指定要搜索的字符串。 |
start_position | 可选。 指定搜索的起始位置。默认位置为 1。 |
返回值
返回字符串中子字符串第一次出现的位置。
示例 1:
下面的示例显示了 POSITION() 函数的用法。
mysql> SELECT POSITION('Y', 'Yxjc123.com');
Result: 1
mysql> SELECT POSITION('123', 'Yxjc123.com');
Result: 5
mysql> SELECT POSITION('.com', 'Yxjc123.com');
Result: 8
mysql> SELECT POSITION('c', 'Yxjc123.com');
Result: 4
mysql> SELECT POSITION('c', 'Yxjc123.com', 5);
Result: 15
mysql> SELECT POSITION('Z', 'Yxjc123.com');
Result: 0
mysql> SELECT POSITION('ABC', 'Yxjc123.com');
Result: 0
示例 2:
考虑一个名为 Employee 的数据库表,其中包含以下记录:
PhoneNumber | EmpID | Address |
---|---|---|
+1-8054098000 | 1 | Brooklyn, New York, USA |
+33-147996101 | 2 | Grenelle, Paris, France |
+31-201150319 | 3 | Geuzenveld, Amsterdam, Netherlands |
+86-1099732458 | 4 | Yizhuangzhen, Beijing, China |
+65-67234824 | 5 | Yishun, Singapore |
+81-357799072 | 6 | Koto City, Tokyo, Japan |
在下面的查询中, POSITION() 函数用于从 PhoneNumber 列记录中提取国家/地区代码。
SELECT *, SUBSTR(PhoneNumber, 1, POSITION('-', PhoneNumber) - 1) AS CountryCode
FROM Employee;
这将产生如下所示的结果:
PhoneNumber | EmpID | Address | CountryCode |
---|---|---|---|
+1-8054098000 | 1 | Brooklyn, New York, USA | +1 |
+33-147996101 | 2 | Grenelle, Paris, France | +33 |
+31-201150319 | 3 | Geuzenveld, Amsterdam, Netherlands | +31 |
+86-1099732458 | 4 | Yizhuangzhen, Beijing, China | +86 |
+65-67234824 | 5 | Yishun, Singapore | +65 |
+81-357799072 | 6 | Koto City, Tokyo, Japan | +81 |