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()函数在指定次数的定界符之前从字符串获取子字符串。