Mysql中用substring_index提取字符内容

单字符分割

实际工作过程中,有很多字符串都是不规范的,例如

蛋蛋-12345678901

假设这是一个姓名-电话结构类型的字符,我们只需要提取其中的部分内容,就需要用到substring_index函数.

提取姓名

也就是提取A-B字符的前半部分

mysql> select substring_index('蛋蛋-12345678901','-',1);

+-------------------------------------------+
| substring_index('蛋蛋-12345678901','-',1)  |
+-------------------------------------------+
| 蛋蛋                                       |
+-------------------------------------------+
1 row in set (0.07 sec)

提取电话

也就是提取A-B字符的后半部分

mysql> select substring_index('蛋蛋-12345678901','-',-1);

+--------------------------------------------+
| substring_index('蛋蛋-12345678901','-',-1)  |
+--------------------------------------------+
| 12345678901                                |
+--------------------------------------------+
1 row in set (0.07 sec)

可以看出

  • 1是从左往右,去掉第1个字符及后面的内容
  • -1是从右往左,去掉第1个字符及后面的内容

多字符分割

根据这个规律,我们可以进行多字符提取.这时候假设字符串是这样的

蛋蛋-12345678901-广州

类似于这种姓名-电话-广州结构类型的字符,我们可以改变第3个参数来取值

提取姓名

也就是提取A-B-C字符的的第一部分

mysql> select substring_index('蛋蛋-12345678901-广州','-',1);

+------------------------------------------------+
| substring_index('蛋蛋-12345678901-广州','-',1)  |
+------------------------------------------------+
| 蛋蛋                                            |
+------------------------------------------------+
1 row in set (0.09 sec)

也就是后面无论有多少个相同的字符,去掉第一个和之后的就可以了

提取城市

也就是提取A-B-C字符的的最末部分

mysql> select substring_index('蛋蛋-12345678901-广州','-',-1);

+-------------------------------------------------+
| substring_index('蛋蛋-12345678901-广州','-',-1)  |
+-------------------------------------------------+
| 广州                                             |
+-------------------------------------------------+
1 row in set (0.08 sec)

提取电话

也就是提取A-B-C字符的的中间部分

mysql> select substring_index(substring_index('蛋蛋-12345678901-广州','-',2),'-',-1);

+------------------------------------------------------------------------+
| substring_index(substring_index('蛋蛋-12345678901-广州','-',2),'-',-1)  |
+------------------------------------------------------------------------+
| 12345678901                                                            |
+------------------------------------------------------------------------+
1 row in set (0.11 sec)

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

但老师

要是看起来爽 求打赏一耳光

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值