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

Mysql行轉(zhuǎn)列把逗號(hào)分隔的字段拆分成多行兩種方法

 更新時(shí)間:2024年05月29日 10:54:57   作者:技術(shù)武器庫(kù)  
在數(shù)據(jù)庫(kù)中有時(shí)候我們需要將一些行數(shù)據(jù)轉(zhuǎn)換為列數(shù)據(jù),這在處理數(shù)據(jù)透視表、報(bào)表生成等場(chǎng)景下非常常見,這篇文章主要給大家介紹了關(guān)于Mysql行轉(zhuǎn)列把逗號(hào)分隔的字段拆分成多行的兩種方法,需要的朋友可以參考下

效果如下

源數(shù)據(jù)

變更后的數(shù)據(jù)

方法

第一種

先執(zhí)行下面的SQL,看不看能不能執(zhí)行,如果有結(jié)果,代表數(shù)據(jù)庫(kù)版本是可以的,可以看下面和自己表關(guān)聯(lián)的SQL,如果不行用第二種。

示例SQL

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1) AS num 
FROM mysql.help_topic 
WHERE help_topic_id < LENGTH('7654,7698,7782,7788')-LENGTH(REPLACE('7654,7698,7782,7788',',',''))+1

和業(yè)務(wù)結(jié)合在一起使用

SELECT
		a.store_signer_name,
		substring_index( substring_index( a.concatStoreId, ',', b.help_topic_id + 1 ), ',', - 1 ) AS concatStoreId 
	FROM
		(select store_signer_nameconcatStoreId from test) a
		INNER JOIN mysql.help_topic b ON b.help_topic_id < (
			length( a.concatStoreId ) - length(
			REPLACE ( a.concatStoreId, ',', '' )) + 1)

其核心在于mysql.help_topic,但是版本太低的數(shù)據(jù)庫(kù)版本不支持,如果不支持,可以用下面第二種。

第二種

示例SQL

SELECT
  SUBSTRING_INDEX(SUBSTRING_INDEX(table_name.csv_values, ',', numbers.n), ',', -1) AS split_value
FROM
  table_name
  INNER JOIN
  (SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL
   SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15 UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL
   SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23 UNION ALL SELECT 24 UNION ALL SELECT 25 UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL
   SELECT 29 UNION ALL SELECT 30 UNION ALL SELECT 31 UNION ALL SELECT 32 UNION ALL SELECT 33 UNION ALL SELECT 34 UNION ALL SELECT 35 UNION ALL SELECT 36 UNION ALL SELECT 37 UNION ALL
   SELECT 38 UNION ALL SELECT 39 UNION ALL SELECT 40) numbers
  ON CHAR_LENGTH(table_name.csv_values) - CHAR_LENGTH(REPLACE(table_name.csv_values, ',', '')) >= numbers.n - 1;

在上面的查詢中,因?yàn)槲叶禾?hào)分隔的最大個(gè)數(shù)是36,所以我添加了40個(gè)UNION ALL SELECT子句,以生成數(shù)字序列1到40。你可以根據(jù)需要調(diào)整這個(gè)序列的長(zhǎng)度。

請(qǐng)注意,如果你的逗號(hào)分隔值個(gè)數(shù)大于40,那么你需要相應(yīng)地增加數(shù)字序列的長(zhǎng)度。

和業(yè)務(wù)結(jié)合在一起使用

SELECT
table_name.store_signer_name,
table_name.store_signer_contact,
  SUBSTRING_INDEX(SUBSTRING_INDEX(table_name.concatStoreId, ',', numbers.n), ',', -1) AS store_id
FROM
  (select store_signer_name,store_signer_contact,GROUP_CONCAT(store_id) concatStoreId from t_store_esgin_info where business_status = 1003 and type =0 and start_year = 2023  group by store_signer_name,store_signer_contact having count(1) > 1) table_name
  INNER JOIN
  (SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL
   SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15 UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL
   SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23 UNION ALL SELECT 24 UNION ALL SELECT 25 UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL
   SELECT 29 UNION ALL SELECT 30 UNION ALL SELECT 31 UNION ALL SELECT 32 UNION ALL SELECT 33 UNION ALL SELECT 34 UNION ALL SELECT 35 UNION ALL SELECT 36 UNION ALL SELECT 37 UNION ALL
   SELECT 38 UNION ALL SELECT 39 UNION ALL SELECT 40) numbers
  ON CHAR_LENGTH(table_name.concatStoreId) - CHAR_LENGTH(REPLACE(table_name.concatStoreId, ',', '')) >= numbers.n - 1;

結(jié)論

如果Mysql版本較低,使用第二種,如果可以執(zhí)行第一種示例SQL,那么推薦使用第一種,動(dòng)態(tài)的。

到此這篇關(guān)于Mysql行轉(zhuǎn)列把逗號(hào)分隔的字段拆分成多行的兩種方法的文章就介紹到這了,更多相關(guān)Mysql逗號(hào)分隔字段拆分多行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL中使用FREDATED引擎實(shí)現(xiàn)跨數(shù)據(jù)庫(kù)服務(wù)器、跨實(shí)例訪問(wèn)

    MySQL中使用FREDATED引擎實(shí)現(xiàn)跨數(shù)據(jù)庫(kù)服務(wù)器、跨實(shí)例訪問(wèn)

    這篇文章主要介紹了MySQL中使用FREDATED引擎實(shí)現(xiàn)跨數(shù)據(jù)庫(kù)服務(wù)器、跨實(shí)例訪問(wèn),本文講解了FEDERATED存儲(chǔ)引擎的描述、安裝與啟用FEDERATED存儲(chǔ)引擎、準(zhǔn)備遠(yuǎn)程服務(wù)器環(huán)境等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • 一篇文章帶你了解SQL之CASE WHEN用法詳解

    一篇文章帶你了解SQL之CASE WHEN用法詳解

    本文介紹下,在mysql數(shù)據(jù)庫(kù)中,有關(guān)case when語(yǔ)句的用法,介紹了case when語(yǔ)句的基礎(chǔ)知識(shí),并提供了相關(guān)實(shí)例,供大家學(xué)習(xí)參考,有需要的朋友不要錯(cuò)過(guò)
    2021-08-08
  • MySQL處理重復(fù)數(shù)據(jù)完整代碼實(shí)例

    MySQL處理重復(fù)數(shù)據(jù)完整代碼實(shí)例

    在數(shù)據(jù)庫(kù)管理中,查找重復(fù)值是一項(xiàng)常見需求,下面這篇文章主要介紹了MySQL處理重復(fù)數(shù)據(jù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-09-09
  • MySQL將多條數(shù)據(jù)合并成一條的完整代碼示例

    MySQL將多條數(shù)據(jù)合并成一條的完整代碼示例

    我們?cè)诓僮鲾?shù)據(jù)的時(shí)候,有時(shí)候需要把多行數(shù)據(jù),拼接成一行,下面這篇文章主要給大家介紹了關(guān)于MySQL將多條數(shù)據(jù)合并成一條的完整代碼示例,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • phpstudy無(wú)法啟動(dòng)MySQL服務(wù)的完美解決辦法

    phpstudy無(wú)法啟動(dòng)MySQL服務(wù)的完美解決辦法

    學(xué)習(xí)php當(dāng)然是要先安裝好運(yùn)行環(huán)境了,phpstyudy是一個(gè)運(yùn)行php的集成環(huán)境,一鍵安裝對(duì)新手很友好,下面這篇文章主要給大家介紹了關(guān)于phpstudy無(wú)法啟動(dòng)MySQL服務(wù)的完美解決辦法,需要的朋友可以參考下
    2022-06-06
  • 深入講解MySQL事務(wù)的ACID特性、隔離級(jí)別、實(shí)現(xiàn)原理及鎖機(jī)制

    深入講解MySQL事務(wù)的ACID特性、隔離級(jí)別、實(shí)現(xiàn)原理及鎖機(jī)制

    本文深入講解MySQL事務(wù)的ACID特性、隔離級(jí)別、實(shí)現(xiàn)原理及鎖機(jī)制,探討事務(wù)的原子性、一致性、隔離性和持久性,分析不同隔離級(jí)別的優(yōu)劣,詳解redolog、undolog、MVCC及行鎖算法
    2026-01-01
  • MYSQL基礎(chǔ)之連接MYSQL、修改密碼、添加用戶

    MYSQL基礎(chǔ)之連接MYSQL、修改密碼、添加用戶

    在這篇文章中我們就從連接MYSQL、修改密碼、增加用戶等方面來(lái)學(xué)習(xí)一些MYSQL的常用命令。
    2008-08-08
  • MySQL觸發(fā)器的應(yīng)用示例詳解

    MySQL觸發(fā)器的應(yīng)用示例詳解

    這篇文章主要介紹了MySQL觸發(fā)器的應(yīng)用,觸發(fā)器是與MySQL數(shù)據(jù)表有關(guān)的數(shù)據(jù)庫(kù)對(duì)象,在滿足定義條件時(shí)觸發(fā),并執(zhí)行觸發(fā)器中定義的語(yǔ)句集合,觸發(fā)器的這種特性可以協(xié)助應(yīng)用在數(shù)據(jù)庫(kù)端確保數(shù)據(jù)的完整性,需要的朋友可以參考下
    2022-08-08
  • MySQL 5.6主從報(bào)錯(cuò)的實(shí)戰(zhàn)記錄

    MySQL 5.6主從報(bào)錯(cuò)的實(shí)戰(zhàn)記錄

    這篇文章主要給大家介紹了關(guān)于MySQL 5.6主從報(bào)錯(cuò)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • MySQL?FLOAT不準(zhǔn)問(wèn)題解析

    MySQL?FLOAT不準(zhǔn)問(wèn)題解析

    在數(shù)據(jù)庫(kù)處理中,使用FLOAT類型存儲(chǔ)浮點(diǎn)數(shù)時(shí),由于二進(jìn)制表示的限制,會(huì)導(dǎo)致精度損失,解決方法包括使用DOUBLE或DECIMAL類型來(lái)提高精度,或避免使用浮點(diǎn)數(shù)進(jìn)行精確計(jì)算,感興趣的可以了解一下
    2024-09-09

最新評(píng)論

海伦市| 镇巴县| 鞍山市| 北安市| 五河县| 江油市| 萨嘎县| 廊坊市| 仙居县| 宜昌市| 满城县| 威宁| 高安市| 同仁县| 和林格尔县| 吉隆县| 望奎县| 兴城市| 霞浦县| 沧州市| 青州市| 安顺市| 于都县| 山西省| 托克逊县| 沁阳市| 肃宁县| 周宁县| 陇西县| 麻栗坡县| 镇雄县| 永春县| 汝阳县| 阳东县| 屯门区| 康平县| 砀山县| 阿城市| 两当县| 乐亭县| 云南省|