mysql和excel中使用拆分符,將一列轉多列


我們經常在使用數據庫都是行轉列,或列轉行,這都比較常見,但是工作中遇到了一個問題,在mysql數據庫中存在一個字段,存的是一個全路徑,並且各級路徑ID以逗號隔開,現在需要用逗號,將一列拆分成多列顯示,也就是列轉列,需要怎么做呢?

首先,模擬一條數據出來:

SELECT '100015011,546,100011239,695,6915038369' COL;

 接下來,需要將這一列數據以逗號分隔拆分成5列,需要使用SUBSTRING_INDEX函數。先介紹下這個函數的用法:

SUBSTRING_INDEX(str,delim,count)  -- str: 被分割的字符串; delim: 分隔符; count: 分割符出現的次數。

cout 為整數標識從左邊開始,count為負數從右邊開始。

接下來具體實現:

SELECT
B.COL,
SUBSTRING_INDEX( SUBSTRING_INDEX( B.COL, ',', 1 ), ',', - 1 ) one,
SUBSTRING_INDEX( SUBSTRING_INDEX( B.COL, ',', 2 ), ',', - 1 ) two,
SUBSTRING_INDEX( SUBSTRING_INDEX( B.COL, ',', 3 ), ',',- 1 ) three,
SUBSTRING_INDEX( SUBSTRING_INDEX( B.COL, ',', 4 ), ',',- 1 ) four,
SUBSTRING_INDEX( SUBSTRING_INDEX( B.COL, ',', 5 ), ',',- 1 ) five
FROM
( SELECT '100015011,546,100011239,695,6915038369' COL ) B;

查詢結果

 

 分析下其中一列拆分邏輯, SUBSTRING_INDEX( SUBSTRING_INDEX( B.COL, ',', 4 ), ',',- 1 ),首先SUBSTRING_INDEX( B.COL, ',', 4 )是從左邊開始以逗號截取到第4個字符串為

100015011,546,100011239,695,之后用SUBSTRING_INDEX( SUBSTRING_INDEX( B.COL, ',', 4 ), ',',- 1 ),將第一次截取后的值,從右邊開始,截取第一個字符串,就得到了最終結果695.其他列邏輯同理。

 

除了在用sql語句進行拆分列外,還給大家介紹一種方法,借助office excel 來進行分列。

 打開 數據-》分列,到下一步

 選擇分隔符,根據實際情況選擇,這里用逗號分隔,進入下一步

數據類型默認常規就好,完成

 

 數據就拆分好了。

 

 

 以上是個人工作中遇到的問題及相應的解決方法,希望對小伙伴們有所幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM