最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2020年06月26日 11:21:03   作者:懂點(diǎn)IT的耿小廚  
這篇文章主要給大家介紹了關(guān)于MySQL按指定字符合并以及拆分的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

1、 合并

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

創(chuàng)建測(cè)試表

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

插入測(cè)試數(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字段的內(nèi)容

默認(rèn)是按照逗號(hào)進(jìn)行合并的,例如:

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

指定分隔符合并,例如指定使用 ||  符號(hào)進(jìn)行合并

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

注意

默認(rèn)情況下,合并后的長(zhǎng)度不能超過(guò)1024,否則結(jié)果會(huì)被截?cái)?/p>

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

# 使用shell腳本來(lái)實(shí)現(xiàn)
vim test_insert.sh
# 添加如下內(nèi)容 

#!/bin/bash
# gjc

for 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

# 運(yùn)行腳本插入數(shù)據(jù) sh test_insert.sh
mysql> select count(*)from tb_group;
+----------+
| count(*) |
+----------+
|  1030 |
+----------+
1 row in set (0.00 sec)

再進(jìn)行合并

mysql> select group_concat(col1)cols, length(group_concat(col1)) col_len from tb_group\G
*************************** 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: 1024
1 row in set, 2 warnings (0.01 sec)

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

對(duì)于這種情況,實(shí)際使用時(shí)肯定是不滿足的,如何解決呢?其實(shí)此長(zhǎng)度與MySQL數(shù)據(jù)庫(kù)的group_concat_max_len參數(shù)有直接關(guān)系(默認(rèn)為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)

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

/* 修改全局參數(shù),這樣所有的新連接都會(huì)生效 */
mysql> set global group_concat_max_len=102400;
Query OK, 0 rows affected (0.01 sec)

/* 修改本會(huì)話參數(shù),這樣當(dāng)前連接不用退出也可以生效 */
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_group\G
*************************** 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,a
col_len: 2069
1 row in set (0.01 sec)

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

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

2、 拆分

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

創(chuàng)建測(cè)試表及數(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

按照逗號(hào)拆分

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)

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

按指定字符拆分

如果是其他分隔符的,修改瑞陽(yáng)的分隔符字段即可。

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、 結(jié)語(yǔ)

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

到此這篇關(guān)于MySQL按指定字符合并以及拆分的文章就介紹到這了,更多相關(guān)MySQL指定字符合并及拆分內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談MYSQL中樹(shù)形結(jié)構(gòu)表3種設(shè)計(jì)優(yōu)劣分析與分享

    淺談MYSQL中樹(shù)形結(jié)構(gòu)表3種設(shè)計(jì)優(yōu)劣分析與分享

    在開(kāi)發(fā)中經(jīng)常遇到樹(shù)形結(jié)構(gòu)的場(chǎng)景,本文將以部門(mén)表為例對(duì)比幾種設(shè)計(jì)的優(yōu)缺點(diǎn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Win10下mysql 8.0.20 安裝配置方法圖文教程

    Win10下mysql 8.0.20 安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了Win10下mysql 8.0.20 安裝配置方法圖文教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 全面分析MySQL?ERROR?1045出現(xiàn)的原因及解決

    全面分析MySQL?ERROR?1045出現(xiàn)的原因及解決

    這篇文章主要介紹了全面分析MySQL?ERROR?1045出現(xiàn)的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • mysql閃回工具binlog2sql安裝配置教程詳解

    mysql閃回工具binlog2sql安裝配置教程詳解

    這篇文章主要介紹了mysql閃回工具binlog2sql安裝配置詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 淺談MySql的存儲(chǔ)引擎(表類型)

    淺談MySql的存儲(chǔ)引擎(表類型)

    通常意義上,數(shù)據(jù)庫(kù)也就是數(shù)據(jù)的集合,具體到計(jì)算機(jī)上數(shù)據(jù)庫(kù)可以是存儲(chǔ)器上一些文件的集合或者一些內(nèi)存數(shù)據(jù)的集合
    2011-05-05
  • mysql-8.0.11-winx64.zip安裝教程詳解

    mysql-8.0.11-winx64.zip安裝教程詳解

    這篇文章主要介紹了mysql-8.0.11-winx64.zip安裝教程詳解及注意事項(xiàng),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下
    2018-05-05
  • MySQL免密登錄的幾種配置方式小結(jié)

    MySQL免密登錄的幾種配置方式小結(jié)

    在日常運(yùn)維中,為了簡(jiǎn)化登錄操作或提高自動(dòng)化腳本執(zhí)行的效率,我們經(jīng)常需要配置 MySQL 免密登錄,MySQL 支持通過(guò)多種方式實(shí)現(xiàn)免密登錄,這樣我們就可以避免每次輸入密碼,本文給大家介紹了MySQL免密登錄的幾種配置方式,需要的朋友可以參考下
    2024-10-10
  • 如何設(shè)計(jì)高效合理的MySQL查詢語(yǔ)句

    如何設(shè)計(jì)高效合理的MySQL查詢語(yǔ)句

    合理的MySQL查詢語(yǔ)句可以讓我們的MySQL數(shù)據(jù)庫(kù)效率更高,那么如何設(shè)計(jì)高效合理的查詢語(yǔ)句就成為了擺在我們面前的問(wèn)題。
    2015-08-08
  • SQL中distinct去重關(guān)鍵字使用和count統(tǒng)計(jì)組合使用方法

    SQL中distinct去重關(guān)鍵字使用和count統(tǒng)計(jì)組合使用方法

    這篇文章主要給大家介紹了關(guān)于SQL中distinct去重關(guān)鍵字使用和count統(tǒng)計(jì)組合使用的相關(guān)資料,count()是SQL中提供的用于統(tǒng)計(jì)記錄數(shù)量的函數(shù),需要的朋友可以參考下
    2024-08-08
  • 一文帶你了解MySQL中觸發(fā)器的操作

    一文帶你了解MySQL中觸發(fā)器的操作

    觸發(fā)器,就是一種特殊的存儲(chǔ)過(guò)程。觸發(fā)器和存儲(chǔ)過(guò)程一樣是一個(gè)能夠完成特定功能、存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器上的SQL片段。本文將通過(guò)簡(jiǎn)單的實(shí)力介紹一下觸發(fā)器的操作,需要的可以參考一下
    2023-02-02

最新評(píng)論

河北区| 红原县| 邵东县| 荥阳市| 江城| 公安县| 和田县| 麟游县| 嘉峪关市| 通山县| 多伦县| 河津市| 甘谷县| 葵青区| 衡水市| 大理市| 桂东县| 鄂州市| 廉江市| 桦南县| 台东县| 和田市| 梁平县| 逊克县| 碌曲县| 临清市| 平和县| 乌鲁木齐县| 天镇县| 巴塘县| 安顺市| 肥乡县| 台中市| 灌南县| 裕民县| 宣威市| 葫芦岛市| 西盟| 济宁市| 于田县| 泉州市|