前言

备注:测试数据库版本为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 |±-------------±-------------------±-------------------+| 【京东】 | 【中国电信】 | || 【京东】 | 【中国电信】 | || 【京东】 | 【中国电信】 | || 【京东】 | | || 【京东】 | 【中国电信】 | 【中国联通】 |±-------------±-------------------±-------------------+

此时需要借助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)

更多相关文章

  1. MySQL系列多表连接查询92及99语法示例详解教程
  2. Android(安卓)- Manifest 文件 详解
  3. Android的Handler机制详解3_Looper.looper()不会卡死主线程
  4. Selector、shape详解(一)
  5. android 中使用TextView实现分段显示不同颜色的字符串
  6. exp: 修改Android中strings.xml文件, 动态改变数据
  7. android2.2资源文件详解4--menu文件夹下的菜单定义
  8. Android(安卓)中数据库查询方法 query() 中的 select
  9. android中SqLite query中用selectionArgs处理字符传值

随机推荐

  1. CSS样式如何解决IE浏览器不同版本的兼容
  2. jquery之data()、stop()、delay()的语法
  3. 将表格单元格字体更改为粗体
  4. Angular ng-show不会根据函数返回值显示/
  5. JQuery EasyUI combotree如何得到Multipl
  6. 在中的元素的自定义子弹符号,这是一个普通
  7. 尽管referesh,jQuery格式化不适用于ajax数
  8. html中文本域选中后会出现蓝边框
  9. 如何使用CSS将表放在页面的中心?
  10. js限制文本框只能输入数字方法