濮阳杆衣贸易有限公司

主頁 > 知識庫 > MySQL如何從不固定位置提取字符串元素詳解

MySQL如何從不固定位置提取字符串元素詳解

熱門標簽:百應(yīng)電話機器人優(yōu)勢 外呼系統(tǒng)打電話上限是多少 曲靖移動外呼系統(tǒng)公司 地圖標注費用是多少 武漢網(wǎng)絡(luò)外呼系統(tǒng)服務(wù)商 怎樣在地圖標注銷售區(qū)域 南昌三維地圖標注 電話外呼系統(tǒng)改號 啥是企業(yè)400電話辦理

前言

備注:測試數(shù)據(jù)庫版本為MySQL 8.0

測試數(shù)據(jù):

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【中國電信】【中國聯(lián)通】');

一.需求

經(jīng)常遇到短信類似的需求,需要提取短信的標記信息,但是可能會存在多個短信標記

此例假設(shè)最多有3個標簽,需要輸出如下:

mysql> select * from zqs;
±-----±----------------------------------------------------+
| id | str |
±-----±----------------------------------------------------+
| 1 | 【京東】abc【中國電信】 |
| 1 | 【京東】abc【中國電信】def |
| 1 | ****【京東】abc【中國電信】def |
| 1 | ****【京東】abc |
| 1 | 【京東】abc【中國電信】【中國聯(lián)通】 |
±-----±----------------------------------------------------+

要求輸出如下:

±-------------±-------------------±-------------------+
| first_val | first_va2 | first_va3 |
±-------------±-------------------±-------------------+
| 【京東】 | 【中國電信】 | |
| 【京東】 | 【中國電信】 | |
| 【京東】 | 【中國電信】 | |
| 【京東】 | | |
| 【京東】 | 【中國電信】 | 【中國聯(lián)通】 |
±-------------±-------------------±-------------------+

二.解決方案

Oracle 字符串截取函數(shù) substr和instr配合使用即可,但是MySQL的instr函數(shù)是弱于Oracle的instr函數(shù)。

此時需要借助MySQL的正則表達式 regexp_instr函數(shù)以及substr函數(shù)配合

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   |
+--------------+--------------------+--------------------+
| 【京東】  | 【中國電信】  |     |
| 【京東】  | 【中國電信】  |     |
| 【京東】  | 【中國電信】  |     |
| 【京東】  |     |     |
| 【京東】  | 【中國電信】  | 【中國聯(lián)通】  |
+--------------+--------------------+--------------------+
5 rows in set (0.00 sec)

總結(jié)

到此這篇關(guān)于MySQL如何從不固定位置提取字符串元素的文章就介紹到這了,更多相關(guān)MySQL提取字符串元素內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

標簽:吉林 黑河 錦州 滄州 甘南 隨州 資陽 荊州

巨人網(wǎng)絡(luò)通訊聲明:本文標題《MySQL如何從不固定位置提取字符串元素詳解》,本文關(guān)鍵詞  MySQL,如何,從不,固定,位置,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL如何從不固定位置提取字符串元素詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL如何從不固定位置提取字符串元素詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    天津市| 南靖县| 新郑市| 安西县| 泽库县| 都安| 罗定市| 含山县| 长海县| 那曲县| 嘉定区| 房山区| 玛曲县| 内乡县| 永和县| 和田市| 克什克腾旗| 石河子市| 阜阳市| 鄱阳县| 安达市| 巴塘县| 拉萨市| 文昌市| 沿河| 汽车| 麟游县| 乐至县| 桂林市| 安仁县| 山东省| 浦江县| 虞城县| 弋阳县| 大厂| 瑞昌市| 麻栗坡县| 庄河市| 蚌埠市| 东兰县| 米易县|