mysql字符串截取字段(MySQL如何从不固定位置提取字符串元素详解)
类别:数据库 浏览量:885
时间:2021-10-26 11:44:16 mysql字符串截取字段
MySQL如何从不固定位置提取字符串元素详解前言
备注:测试数据库版本为MySQL 8.0
测试数据:
|
create table zqs(id int ,str varchar (1000)); insert into zqs(id,str) values (1, '【京东】abc【中国电信】' ); insert into zqs(id,str) values (1, '【京东】abc【中国电信】def' ); insert into zqs(id,str) values (1, '****【京东】abc【中国电信】def' ); insert into zqs(id,str) values (1, '****【京东】abc' ); insert into zqs(id,str) values (1, '【京东】abc【中国电信】【中国联通】' ); |
一.需求
经常遇到短信类似的需求,需要提取短信的标记信息,但是可能会存在多个短信标记
此例假设最多有3个标签,需要输出如下:
|
mysql> select * from zqs; ±-----±----------------------------------------------------+ | id | str | ±-----±----------------------------------------------------+ | 1 | 【京东】abc【中国电信】 | | 1 | 【京东】abc【中国电信】def | | 1 | ****【京东】abc【中国电信】def | | 1 | ****【京东】abc | | 1 | 【京东】abc【中国电信】【中国联通】 | ±-----±----------------------------------------------------+ |
要求输出如下:
|
±-------------±-------------------±-------------------+ | first_val | first_va2 | first_va3 | ±-------------±-------------------±-------------------+ | 【京东】 | 【中国电信】 | | | 【京东】 | 【中国电信】 | | | 【京东】 | 【中国电信】 | | | 【京东】 | | | | 【京东】 | 【中国电信】 | 【中国联通】 | ±-------------±-------------------±-------------------+ |
二.解决方案
Oracle 字符串截取函数 substr和instr配合使用即可,但是MySQL的instr函数是弱于Oracle的instr函数。
此时需要借助MySQL的正则表达式 regexp_instr函数以及substr函数配合
|
select substr(str, regexp_instr(str, '【' ,1,1), regexp_instr(str, '】' ,1,1) - regexp_instr(str, '【' ,1,1) + 1 ) first_val, substr(str, regexp_instr(str, '【' ,1,2), regexp_instr(str, '】' ,1,2) - regexp_instr(str, '【' ,1,2) + 1) first_va2, substr(str, regexp_instr(str, '【' ,1,3), regexp_instr(str, '】' ,1,3) - regexp_instr(str, '【' ,1,3) + 1) first_va3 from zqs; |
测试记录:
|
mysql> select substr(str, -> regexp_instr(str, '【' ,1,1), -> regexp_instr(str, '】' ,1,1) - regexp_instr(str, '【' ,1,1) + 1 ) first_val, -> substr(str, -> regexp_instr(str, '【' ,1,2), -> regexp_instr(str, '】' ,1,2) - regexp_instr(str, '【' ,1,2) + 1) first_va2, -> substr(str, -> regexp_instr(str, '【' ,1,3), -> regexp_instr(str, '】' ,1,3) - regexp_instr(str, '【' ,1,3) + 1) first_va3 -> from zqs; +--------------+--------------------+--------------------+ | first_val | first_va2 | first_va3 | +--------------+--------------------+--------------------+ | 【京东】 | 【中国电信】 | | | 【京东】 | 【中国电信】 | | | 【京东】 | 【中国电信】 | | | 【京东】 | | | | 【京东】 | 【中国电信】 | 【中国联通】 | +--------------+--------------------+--------------------+ 5 rows in set (0.00 sec) |
总结
到此这篇关于MySQL如何从不固定位置提取字符串元素的文章就介绍到这了,更多相关MySQL提取字符串元素内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://blog.csdn.net/u010520724/article/details/114261191
您可能感兴趣
- mysql索引提高效率(MySql如何查看索引并实现优化)
- mysql 加锁处理分析(mysql死锁和分库分表问题详解)
- mysqlsource命令作用(MySQL source命令的使用简介)
- mysql账户访问权限(MySQL 权限控制详解)
- mysql日期用法(MySQL DATE_ADD和ADDDATE函数实现向日期添加指定时间间隔)
- mysql自定义函数怎么设置(MySQL自定义变量?学不废不收费~)
- mysql创建表存在哪里(MySQL的表空间是什么)
- mysqlexplain的用法(MySQL SHOW STATUS语句的使用)
- 怎样查看mysql的安装路径(MySQL中查看数据库安装路径的方法)
- mysql行级锁使用教程(浅析MySQL的lru链表)
- laravel mysql 操作方式(Laravel使用原生sql语句并调用的方法)
- mysql的使用步骤(MySQL infobright的安装步骤)
- mysql8.0.23的安装步骤(mysql 8.0.22 下载安装配置方法图文教程)
- mysql修改表结构的关键字(查看修改MySQL表结构命令)
- 如何使java与sqlserver数据库连接(java连接mysql数据库 java连接sql server数据库)
- python在mysql创建数据库(python3对接mysql数据库实例详解)
- ()
- SCI检索 SSCI检索 EI检索 ISTP检索 CSCD检索简介(SCI检索SSCI检索EI检索)
- 参考文献里期刊名称的写法,你知道吗(参考文献里期刊名称的写法)
- 硕博期刊 SCI SSCI CSSCI分不清 一文带你看懂主流期刊分类(硕博期刊SCISSCI)
- 辱华品牌新百伦官宣新代言人IU,个别粉丝希望get爱豆同款(辱华品牌新百伦官宣新代言人IU)
- 巅峰时期被爆床照,曾被选国民最讨厌女星,IU不为人知的黑历史(巅峰时期被爆床照)
热门推荐
- sql server支持两种登录验证方式(远程登陆SQL Server 2014数据库的方法)
- reactnative示例代码(React Native项目框架搭建的一些心得体会)
- mysql怎么给查询权限(MySql设置指定用户数据库查看查询权限)
- mysql访问被拒绝(nacos无法连接mysql的解决方法)
- 数组循环遍历展示vue(Vue中foreach数组与js中遍历数组的写法说明)
- 配置mysql可以远程登录(开启MySQL远程连接的方法)
- jupyternotebook搭建和使用(Jupyter Notebook运行JavaScript的方法)
- html5拖动效果怎么写(Html5 滚动穿透的方法)
- 前端app开发适配消息栏(AmazeUI 加载进度条的实现示例)
- 用css3实现阴影(CSS3中文字镂空、透明值、阴影效果设置示例小结)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9