MySQL SUBSTRING_INDEX Function

摘要:在本教程中,您将学习如何使用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)

在此示例中,分隔符为ln为 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)

在此示例中,分隔符为ln为 -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 函数示例

在本教程中,您学习了如何使用 MySQL SUBSTRING_INDEX()函数从字符串中获取指定分隔符出现次数之前的子字符串。

本教程有帮助吗?