亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術文章
文章詳情頁

MySQL按指定字符合并以及拆分實例教程

瀏覽:3日期:2023-10-14 12:09:02

前言

按照指定字符進行合并或拆分是經(jīng)常碰到的場景,MySQL在合并的寫法上比較簡單,但是按指定字符拆分相對比較麻煩一點(也就是要多寫一些字符)。本文將舉例演示如何進行按照指定字符合并及拆分。

1、 合并

MySQL數(shù)據(jù)庫中按照指定字符合并可以直接用group_concat來實現(xiàn)。

創(chuàng)建測試表

mysql> create table tb_group(id int auto_increment primary key ,col1 varchar(20));Query OK, 0 rows affected (0.01 sec)

插入測試數(shù)據(jù)

mysql> insert into tb_group(col1) values(’a’),(’c’),(’dddd’),(’ewdw’),(’vxgdh’);;Query OK, 5 rows affected (0.01 sec)Records: 5 Duplicates: 0 Warnings: 0

合并col1字段的內容

默認是按照逗號進行合并的,例如:

mysql> select group_concat(col1) from tb_group; +---------------------+| group_concat(col1) |+---------------------+| a,c,dddd,ewdw,vxgdh |+---------------------+1 row in set (0.01 sec)

指定分隔符合并,例如指定使用 || 符號進行合并

mysql> select group_concat(col1,’||’) from tb_group; +-------------------------------+| group_concat(col1,’||’) |+-------------------------------+| a||,c||,dddd||,ewdw||,vxgdh|| |+-------------------------------+1 row in set (0.00 sec)

注意

默認情況下,合并后的長度不能超過1024,否則結果會被截斷

例如,我再寫個腳本插入一些數(shù)據(jù)

# 使用shell腳本來實現(xiàn)vim test_insert.sh# 添加如下內容 #!/bin/bash# gjcfor i in {1..1025}do mysql -uroot -p’123456’ --socket=/data/mysql3306/tmp/mysql.sock -e 'insert into testdb.tb_group1(col1)values(’a’) 'done# 運行腳本插入數(shù)據(jù) sh test_insert.sh

mysql> select count(*)from tb_group;+----------+| count(*) |+----------+| 1030 |+----------+1 row in set (0.00 sec)

再進行合并

mysql> select group_concat(col1)cols, length(group_concat(col1)) col_len from tb_groupG*************************** 1. row *************************** cols: a,c,dddd,ewdw,vxgdh,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,col_len: 10241 row in set, 2 warnings (0.01 sec)

可以看出,結果中總長度字節(jié)只有1024

對于這種情況,實際使用時肯定是不滿足的,如何解決呢?其實此長度與MySQL數(shù)據(jù)庫的group_concat_max_len參數(shù)有直接關系(默認為1024)

mysql> show global variables like ’group_concat_max_len’;+----------------------+-------+| Variable_name | Value |+----------------------+-------+| group_concat_max_len | 1024 |+----------------------+-------+1 row in set (0.08 sec)

那我們調整一下參數(shù)看看

/* 修改全局參數(shù),這樣所有的新連接都會生效 */mysql> set global group_concat_max_len=102400;Query OK, 0 rows affected (0.01 sec)/* 修改本會話參數(shù),這樣當前連接不用退出也可以生效 */mysql> set session group_concat_max_len=102400;Query OK, 0 rows affected (0.00 sec)mysql> show global variables like ’group_concat_max_len’;+----------------------+--------+| Variable_name | Value |+----------------------+--------+| group_concat_max_len | 102400 |+----------------------+--------+1 row in set (0.00 sec)mysql> show variables like ’group_concat_max_len’;+----------------------+--------+| Variable_name | Value |+----------------------+--------+| group_concat_max_len | 102400 |+----------------------+--------+1 row in set (0.01 sec)

再合并一下看看

mysql> select group_concat(col1)cols, length(group_concat(col1)) col_len from tb_groupG*************************** 1. row *************************** cols: a,c,dddd,ewdw,vxgdh,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,acol_len: 20691 row in set (0.01 sec)

這樣結果就對了。因此生產(chǎn)環(huán)境中 該參數(shù)建議調整為合適的大小。

(Tips:Oracle數(shù)據(jù)庫中可以使用listagg或wm_concat等多種方式實現(xiàn),也比較簡單,可以自行測試)

2、 拆分

按指定字符拆分字符串,也是比較常見的場景。但是MySQL數(shù)據(jù)庫中字符串的拆分沒有其他數(shù)據(jù)庫那么方便(其他數(shù)據(jù)庫直接有拆分函數(shù)),且需要借助mysql庫中的mysql.help_topic表來輔助實現(xiàn)。例子如下:

創(chuàng)建測試表及數(shù)據(jù)

mysql> create table tb_split(id int primary key auto_increment,col1 varchar(20));Query OK, 0 rows affected (0.01 sec)mysql> insert into tb_split(col1) values(’a,b,c,d’),(’c,a,g,h’);Query OK, 2 rows affected (0.01 sec)Records: 2 Duplicates: 0 Warnings: 0

按照逗號拆分

mysql> SELECT a.id, substring_index(substring_index(a.col1, ’,’, b.help_topic_id + 1), ’,’,- 1) NAME FROM tb_split a JOIN mysql.help_topic b ON b.help_topic_id < (length(a.col1) - length(REPLACE(a.col1, ’,’, ’’)) + 1);+----+------+| id | NAME |+----+------+| 1 | a || 1 | b || 1 | c || 1 | d || 2 | c || 2 | a || 2 | g || 2 | h |+----+------+8 rows in set (0.00 sec)

這樣也就實現(xiàn)了拆分。

按指定字符拆分

如果是其他分隔符的,修改瑞陽的分隔符字段即可。

mysql> insert into tb_split(col1) values(’a|v|f’);Query OK, 1 row affected (0.00 sec)mysql> select * from tb_split;+----+---------+| id | col1 |+----+---------+| 1 | a,b,c,d || 2 | c,a,g,h || 3 | a|v|f |+----+---------+3 rows in set (0.01 sec)mysql> SELECT a.id, substring_index(substring_index(a.col1, ’|’, b.help_topic_id + 1), ’|’,- 1) col_split FROM tb_split a JOIN mysql.help_topic b ON b.help_topic_id < (length(a.col1) - length(REPLACE(a.col1, ’|’, ’’)) + 1) where a.id=3;+----+-----------+| id | col_split |+----+-----------+| 3 | a || 3 | v || 3 | f |+----+-----------+3 rows in set (0.00 sec)

這樣就完成按照指定字符的合并及拆分了。

3、 結語

本文介紹了MySQL常用的合并及拆分方法,對于擅長寫SQL的同學也可以使用其他方式實現(xiàn),以便解決權限不足(例如拆分時需要使用mysql庫的help_topic表的權限)等情況下的需求。

到此這篇關于MySQL按指定字符合并以及拆分的文章就介紹到這了,更多相關MySQL指定字符合并及拆分內容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

相關文章:
主站蜘蛛池模板: 黄色网址亚洲 | 亚洲人的天堂男人爽爽爽 | 97婷婷狠狠成人免费视频 | 中文字幕国产一区 | 欧美亚洲日本 | 国产午夜精品理论片影院 | 亚洲欧美在线观看播放 | 国产精品亚洲精品爽爽 | 中文字幕一级毛片 | 欧美丰满大乳大屁股毛片 | 最新欧美精品一区二区三区不卡 | 久久久欧美综合久久久久 | 国产精品国产三级国产普通 | 国产精品二区三区免费播放心 | 午夜成年女人毛片免费观看 | 免费观看女人一摸全是水 | 久久精品精品 | 亚洲精品成人中文网 | 在线精品视频免费观看 | 成免费网站 | 成年人视频在线观看免费 | 免费亚洲网站 | 欧美成人免费香蕉 | 久久精品视频在线 | 亚洲欧美人妖另类激情综合区 | 国产精品亚洲综合天堂夜夜 | 美女双腿打开让男人桶爽网站 | 欧美成人a | 中文国产成人精品久久一 | 国产黄色三级三级三级 | v欧美精品v日本精品 | 国内精品久久久久久影院老狼 | 中文字幕在线一区二区在线 | 台湾三级在线播放 | 成人99国产精品 | 久热精品男人的天堂在线视频 | 欧美特级一级毛片 | 中文字幕亚洲在线 | 国产精品久久久久久小说 | 99精品国产免费久久国语 | 91不卡在线精品国产 |