MySQL SUBSTRING_INDEX() 函数
MySQL SUBSTRING_INDEX() 函数接受一个字符串值、一个分隔符和一个表示分隔符出现次数(例如 N)的数值作为参数。它返回从给定字符串左端开始到指定分隔符第 N 次出现的子字符串。
如果传递负值作为第三个参数 (N),则生成的子字符串将从给定字符串右端开始,在分隔符出现指定次数 (N) 之后开始。
语法
以下是 MySQL SUBSTRING_INDEX() 函数的语法 -
SUBSTRING_INDEX(str,delim,N)
参数
此函数接受一个字符串值、一个分隔符和一个计数作为参数。
返回值
此函数返回输入字符串中指定次数出现的子字符串。分隔符。
示例
在以下示例中,我们将提取直到第 3 次出现的分隔符 '' 为止的子字符串 -
SELECT SUBSTRING_INDEX('Hello how are you Welcome to Tutorialspoint', ' ', 3);
以下是上述代码的输出 -
| SUBSTRING_INDEX('Hello how are you Welcome to Tutorialspoint', ' ', 3) |
|---|
| Hello how are |
示例
您也可以将负值作为此函数的第三个参数 (N) 传递。如果这样做,则生成的子字符串将从给定字符串的右端开始,从给定分隔符出现的指定次数 (N) 之后开始 -
SELECT SUBSTRING_INDEX('Hello how are you Welcome to Tutorialspoint', ' ', -3);
输出结果如下 -
| SUBSTRING_INDEX('您好,欢迎来到 Tutorialspoint', ' ', -3) |
|---|
| 欢迎来到 Tutorialspoint |
示例
您也可以将字符串形式的数值作为此函数的第一个参数传递 -
SELECT SUBSTRING_INDEX('6486582-654045-7493-7830-3693_4333', '-', 3);
结果如下 -
| SUBSTRING_INDEX('6486582-654045-7493-7830-3693_4333', '-', 3) |
|---|
| 6486582-654045-7493 |
示例
如果任何给定参数为 NULL,则函数返回 NULL -
SELECT SUBSTRING_INDEX(NULL, '.', -2);
生成的结果如下所示 -
| SUBSTRING_INDEX(NULL, '.', -2) |
|---|
| 0x |
示例
如果作为第三个 (N) 参数的值传递的参数为 0,则该函数返回一个空字符串 -
SELECT SUBSTRING_INDEX('Hello how are you Welcome to Tutorialspoint', ' ', 0);
以下是上述代码的输出 -
| SUBSTRING_INDEX('Hello how are you Welcome to Tutorialspoint', ' ', 0) |
|---|
示例
让我们创建一个名为"DISPATCHES"的表,并使用 CREATE 和 INSERT 语句向其中插入记录,如下所示 -
CREATE TABLE DISPATCHES( ProductName VARCHAR(255), CustomerName VARCHAR(255), Price INT, Location VARCHAR(255), DispatchTimeStamp timestamp );
现在,让我们使用 INSERT 语句将记录插入其中 -
INSERT INTO DISPATCHES VALUES
('Key-Board', 'Raja', 7000, 'Hyderabad', TIMESTAMP('2019-05-04 15-02-45')),
('Earphones', 'Roja', 2000, 'Vishakhapatnam', TIMESTAMP('2019-06-26 14-13-12')),
('Mouse', 'Puja', 3000, 'Vijayawada', TIMESTAMP('2019-12-07 07-50-37')),
('Mobile', 'Vanaja', 9000, 'Chennai', TIMESTAMP('2018-03-21 16-00-45')),
('Headset', 'Jalaja', 6000, 'Goa', TIMESTAMP('2018-12-30 10-49-27')),
('Watch', 'Rajan', 4000, 'Chennai', TIMESTAMP('2019-04-21 14-17-02'));
获得的 DISPATCHES 表如下 −
| ProductName | CustomerName | Price | Location | DispatchTimeStamp |
|---|---|---|---|---|
| Key-Board | Raja | 7000 | Hyderabad | 2019-05-04 15:02:45 |
| Earphones | Roja | 2000 | Vishakhapatnam | 2019-06-26 14:13:12 |
| Mouse | Puja | 3000 | Vijayawada | 2019-12-07 07:50:37 |
| Mobile | Vanaja | 9000 | Chennai | 2018-03-21 16:00:45 |
| Headset | Jalaja | 6000 | Goa | 2018-12-30 10:49:27 |
| Watch | Rajan | 4000 | Chennai | 2019-04-21 14:17:02 |
以下查询从"DispatchTimeStamp"列中提取子字符串,直到第二次出现"-"为止 −
SELECT ProductName, Price, DispatchTimeStamp, SUBSTRING_INDEX(DispatchTimeStamp, '-', 2) as Result FROM DISPATCHES;
输出
执行上述代码后,我们得到以下输出 -
| ProductName | Price | DispatchTimeStamp | Result |
|---|---|---|---|
| Key-Board | 7000 | 2019-05-04 15:02:45 | 2019-05 |
| Earphones | 2000 | 2019-06-26 14:13:12 | 2019-06 |
| Mouse | 3000 | 2019-12-07 07:50:37 | 2019-12 |
| Mobile | 9000 | 2018-03-21 16:00:45 | 2018-03 |
| Headset | 6000 | 2018-12-30 10:49:27 | 2018-12 |
| Watch | 4000 | 2019-04-21 14:17:02 | 2019-04 |
示例
以下查询从"DispatchTimeStamp"中提取最后一次出现"-"后的子字符串 -
SELECT ProductName, Price, DispatchTimeStamp, SUBSTRING_INDEX(DispatchTimeStamp, '-', -1) as Result FROM DISPATCHES;
输出
执行上述代码后,我们得到以下输出 -
| ProductName | Price | DispatchTimeStamp | Result |
|---|---|---|---|
| Key-Board | 7000 | 2019-05-04 15:02:45 | 04 15:02:45 |
| Earphones | 2000 | 2019-06-26 14:13:12 | 26 14:13:12 |
| Mouse | 3000 | 2019-12-07 07:50:37 | 07 07:50:37 |
| Mobile | 9000 | 2018-03-21 16:00:45 | 21 16:00:45 |
| Headset | 6000 | 2018-12-30 10:49:27 | 30 10:49:27 |
| Watch | 4000 | 2019-04-21 14:17:02 | 21 14:17:02 |
mysql-substring-index-function.html