MySQL SUBSTRING_INDEX函数

时间:2019-11-20 08:52:25  来源:igfitidea点击:

简介:在本教程中,您将学习如何使用SUBSTRING_INDEX()函数在指定次数的定界符之前从字符串获取子字符串。

MySQL SUBSTRING_INDEX()函数概述

SUBSTRING_INDEX()函数从字符串中返回指定次数的分隔符之前的子字符串。

这是SUBSTRING_INDEX()函数的语法:

SUBSTRING_INDEX(str,delimiter,n)

使用以下语法:

  • str是要从中提取子字符串的字符串。

  • 定界符是充当定界符的字符串。
    搜索分隔符时,该函数执行区分大小写的匹配。

  • n是一个整数,它指定定界符的出现次数。
    n可以为负或正。
    如果n为正,则该函数从字符串的左侧返回每个字符,直到出现n个分隔符为止。
    如果n为负,则该函数返回从右到出现n个分隔符的每个字符。

MySQL SUBSTRING_INDEX()函数示例

让我们举一些使用SUBSTRING_INDEX()函数的示例。

A)将MySQL SUBSTRING_INDEX()函数与正数出现的分隔符一起使用

请参见以下示例:

SELECT 
    SUBSTRING_INDEX('Hello World', 'l', 1);

在此示例中,定界符为l,n为1,因此,该函数返回直到定界符1第一次出现的每个字符。

这是输出:

+----------------------------------------+
| SUBSTRING_INDEX('Hello World', 'l', 1) |
+----------------------------------------+
| He                                     |
+----------------------------------------+
1 row in set (0.00 sec)

以下显示了使用SUBSTRING_INDEX()函数的另一个示例:

SELECT 
    SUBSTRING_INDEX('Hello World', 'l', 2);

输出:

+----------------------------------------+
| SUBSTRING_INDEX('Hello World', 'l', 2) |
+----------------------------------------+
| Hel                                    |
+----------------------------------------+
1 row in set (0.00 sec)

SELECT 
    SUBSTRING_INDEX('Hello World', 'l', 3);

输出:

+----------------------------------------+
| SUBSTRING_INDEX('Hello World', 'l', 3) |
+----------------------------------------+
| Hello Wor                              |
+----------------------------------------+
1 row in set (0.00 sec)

B)使用MySQL SUBSTRING_INDEX()函数,出现的定界符为负数

请参见以下示例:

SELECT 
    SUBSTRING_INDEX('Hello World', 'l', -1);

在此示例中,定界符为l,n为-1,因此,该函数返回从字符串的右边到字符l的第1次出现的每个字符(从右边开始计数)

这是输出:

+-----------------------------------------+
| SUBSTRING_INDEX('Hello World', 'l', -1) |
+-----------------------------------------+
| d                                       |
+-----------------------------------------+
1 row in set (0.00 sec)

这是另一个示例:

SELECT 
    SUBSTRING_INDEX('Hello World', 'l', - 2) result1,
    SUBSTRING_INDEX('Hello World', 'l', - 3) result2;

输出:

+---------+----------+
| result1 | result2  |
+---------+----------+
| o World | lo World |
+---------+----------+
1 row in set (0.00 sec)

C)将MySQL SUBSTRING_INDEX()函数与表数据示例一起使用

请参阅示例数据库中的以下客户表:

本示例使用SUBSTRING_INDEX()函数从美国所有客户的地址中提取门牌号:

SELECT 
    customerName,
    addressLine1,
    SUBSTRING_INDEX(addressLine1, ' ', 1) house_no
FROM
    customers
WHERE
    country = 'USA'
ORDER BY 
    customerName;

下图显示了部分输出:

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