摘要:在本教程中,您将学习如何使用SUBSTRING_INDEX()
函数从字符串中获取指定分隔符出现次数之前的子字符串。
MySQL SUBSTRING_INDEX()
函数概述
SUBSTRING_INDEX()
函数从字符串中返回指定分隔符出现次数之前的子字符串。
以下是SUBSTRING_INDEX()
函数的语法:
SUBSTRING_INDEX(str,delimiter,n)
Code language: SQL (Structured Query Language) (sql)
在这个语法中:
str
是要从中提取子字符串的字符串。-
delimiter
是充当分隔符的字符串。该函数在搜索分隔符时执行区分大小写的匹配。 -
n
是一个整数,指定分隔符出现的次数。n
可以是负数也可以是正数。如果n
为正数,则该函数返回从字符串左侧开始直到分隔符出现n
次的每个字符。如果n
为负数,则该函数返回从右开始直到分隔符出现n
次的每个字符。
MySQL SUBSTRING_INDEX()
函数示例
让我们举一些使用SUBSTRING_INDEX()
函数的示例。
A) 使用 MySQL SUBSTRING_INDEX()
函数和正数的分隔符出现
请参见以下示例:
SELECT
SUBSTRING_INDEX('Hello World', 'l', 1);
Code language: SQL (Structured Query Language) (sql)
在此示例中,分隔符为l
且n
为 1,因此,该函数返回直到第一次出现分隔符l
为止的每个字符。
这是输出:
+----------------------------------------+
| SUBSTRING_INDEX('Hello World', 'l', 1) |
+----------------------------------------+
| He |
+----------------------------------------+
1 row in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
下面显示了使用SUBSTRING_INDEX()
函数的另一个示例:
SELECT
SUBSTRING_INDEX('Hello World', 'l', 2);
Code language: SQL (Structured Query Language) (sql)
输出:
+----------------------------------------+
| SUBSTRING_INDEX('Hello World', 'l', 2) |
+----------------------------------------+
| Hel |
+----------------------------------------+
1 row in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
和
SELECT
SUBSTRING_INDEX('Hello World', 'l', 3);
Code language: SQL (Structured Query Language) (sql)
输出:
+----------------------------------------+
| SUBSTRING_INDEX('Hello World', 'l', 3) |
+----------------------------------------+
| Hello Wor |
+----------------------------------------+
1 row in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
B) 使用 MySQL SUBSTRING_INDEX()
函数且分隔符出现次数为负数
请参见以下示例:
SELECT
SUBSTRING_INDEX('Hello World', 'l', -1);
Code language: SQL (Structured Query Language) (sql)
在此示例中,分隔符为l
且n
为 -1,因此,该函数返回从字符串右侧到第一次出现字符l
的每个字符(从右侧计数)
这是输出:
+-----------------------------------------+
| SUBSTRING_INDEX('Hello World', 'l', -1) |
+-----------------------------------------+
| d |
+-----------------------------------------+
1 row in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
这是另一个例子:
SELECT
SUBSTRING_INDEX('Hello World', 'l', - 2) result1,
SUBSTRING_INDEX('Hello World', 'l', - 3) result2;
Code language: SQL (Structured Query Language) (sql)
输出:
+---------+----------+
| result1 | result2 |
+---------+----------+
| o World | lo World |
+---------+----------+
1 row in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
C) 使用 MySQL SUBSTRING_INDEX()
函数与表数据示例
请参阅示例数据库中的以下customers
表:
此示例使用SUBSTRING_INDEX()
函数从美国所有客户的地址中提取门牌号:
SELECT
customerName,
addressLine1,
SUBSTRING_INDEX(addressLine1, ' ', 1) house_no
FROM
customers
WHERE
country = 'USA'
ORDER BY
customerName;
Code language: SQL (Structured Query Language) (sql)
下图是部分输出:
在本教程中,您学习了如何使用 MySQL SUBSTRING_INDEX()
函数从字符串中获取指定分隔符出现次数之前的子字符串。
本教程有帮助吗?