簡體   English   中英

將列拆分為多列 mysql

[英]Split column into multiple columns mysql

我的 dataframe 有一列(numbers_selected),對於每一行,它看起來像這樣:

1. 6-9-27
2. 2-3-6-8-30
3. 3-11-13-18
4. 3-14-15-17-18-30
5. 3-8-10-12-16
6. 3-7-8-27-29
7. 8-14-21

如您所見,每一行可以有不同數量的數字。

我正在尋找的是看看是否可以為這些數字中的每一個創建一個列。 最多有 6 列,因為一行中的數字不能超過 6 個。

最后,數據集應如下所示:

第一個號碼 第二個號碼 第三個數字 第 4 號 第 5 號 第六號
6 9 27 Null Null Null
2 3 6 8 30 Null
3 11 13 18 Null Null
3 14 15 17 18 30
3 8 10 12 16 Null
3 7 8 27 29 Null
8 14 21 Null Null Null

酒吧

我正在使用的查詢是:

Select 周,number_selected from x。

希望您能幫我解決這些問題,謝謝!

json 方法怎么樣?

select week,
    js ->> '$[0]' as num1,
    js ->> '$[1]' as num2,
    js ->> '$[2]' as num3,
    js ->> '$[3]' as num4,
    js ->> '$[4]' as num5,
    js ->> '$[5]' as num6
from (
    select t.*, concat('[', replace(numbers_selected, '-', ','), ']') as js
    from mytable t
) t

這通過使用字符串函數將破折號分隔的字符串轉換為看起來像 json 數組的東西來工作。 通常, '6-9-27'變為[6,9,27] 然后我們可以使用 json 訪問器->>通過索引來獲取每個數組元素。

DB Fiddle 上的演示

week | num1 | num2 | num3 | num4 | num5 | num6
---: | :--- | :--- | :--- | :--- | :--- | :---
   1 | 6    | 9    | 27   | null | null | null
   2 | 2    | 3    | 6    | 8    | 30   | null
   3 | 3    | 11   | 13   | 18   | null | null
   4 | 3    | 14   | 15   | 17   | 18   | 30  
   5 | 3    | 8    | 10   | 12   | 16   | null
   6 | 3    | 7    | 8    | 27   | 29   | null
   7 | 8    | 14   | 21   | null | null | null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM