mysql 字符串 子串_MySQL 提取第n个分隔的子串

备注:测试数据库版本为MySQL 8.0

一.需求

数据准备

create view v5 as

select 'mo,larry,curly' as name

union all

select 'tina,gina,jaunita,regina,leena' as name;

mysql> select * from v5;

+--------------------------------+

| name |

+--------------------------------+

| mo,larry,curly |

| tina,gina,jaunita,regina,leena |

+--------------------------------+

2 rows in set (0.00 sec)

需要取出航中的第二个姓名

larry

gina

二.解决方案

其实用substring_index 即可

代码:

SELECT name, SUBSTRING_INDEX(name,',',2) name1, SUBSTRING_INDEX(SUBSTRING_INDEX(name,',',2),',',-1) name2

FROM v5;

测试记录:

mysql> create view v5 as

-> select 'mo,larry,curly' as name

-> union all

-> select 'tina,gina,jaunita,regina,leena' as name;

Query OK, 0 rows affected (0.01 sec)

mysql>

mysql> select * from v5;

+--------------------------------+

| name |

+--------------------------------+

| mo,larry,curly |

| tina,gina,jaunita,regina,leena |

+--------------------------------+

2 rows in set (0.00 sec)

mysql>

mysql>

mysql> SELECT name, SUBSTRING_INDEX(name,',',2) name1, SUBSTRING_INDEX(SUBSTRING_INDEX(name,',',2),',',-1) name2

-> FROM v5;

+--------------------------------+-----------+-------+

| name | name1 | name2 |

+--------------------------------+-----------+-------+

| mo,larry,curly | mo,larry | larry |

| tina,gina,jaunita,regina,leena | tina,gina | gina |

+--------------------------------+-----------+-------+

2 rows in set (0.00 sec)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值