用户登录
用户注册

分享至

Mysql中用substring_index提取字符内容

  • 作者: 日醒已散
  • 来源: 51数据库
  • 2021-08-27

单字符分割

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

蛋蛋-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)

软件
前端设计
程序设计
Java相关