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

Mysql行轉列把逗號分隔的字段拆分成多行兩種方法

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

效果如下

源數(shù)據(jù)

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

方法

第一種

先執(zhí)行下面的SQL,看不看能不能執(zhí)行,如果有結果,代表數(shù)據(jù)庫版本是可以的,可以看下面和自己表關聯(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è)務結合在一起使用

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ù)庫版本不支持,如果不支持,可以用下面第二種。

第二種

示例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;

在上面的查詢中,因為我逗號分隔的最大個數(shù)是36,所以我添加了40個UNION ALL SELECT子句,以生成數(shù)字序列1到40。你可以根據(jù)需要調整這個序列的長度。

請注意,如果你的逗號分隔值個數(shù)大于40,那么你需要相應地增加數(shù)字序列的長度。

和業(yè)務結合在一起使用

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;

結論

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

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

相關文章

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

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

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

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

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

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

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

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

    我們在操作數(shù)據(jù)的時候,有時候需要把多行數(shù)據(jù),拼接成一行,下面這篇文章主要給大家介紹了關于MySQL將多條數(shù)據(jù)合并成一條的完整代碼示例,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-05-05
  • phpstudy無法啟動MySQL服務的完美解決辦法

    phpstudy無法啟動MySQL服務的完美解決辦法

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

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

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

    MYSQL基礎之連接MYSQL、修改密碼、添加用戶

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

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

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

    MySQL 5.6主從報錯的實戰(zhàn)記錄

    這篇文章主要給大家介紹了關于MySQL 5.6主從報錯的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • MySQL?FLOAT不準問題解析

    MySQL?FLOAT不準問題解析

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

最新評論

无棣县| 南涧| 五莲县| 桐庐县| 石城县| 郑州市| 昭通市| 大埔县| SHOW| 靖远县| 德清县| 依安县| 昌平区| 伊川县| 金昌市| 邹平县| 阳朔县| 抚松县| 习水县| 临沭县| 新营市| 石河子市| 沧州市| 海南省| 大名县| 当涂县| 土默特左旗| 托里县| 扬中市| 河源市| 保山市| 时尚| 民县| 定结县| 常山县| 扶沟县| 思茅市| 水城县| 乌恰县| 崇文区| 东乡族自治县|