[英]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 訪問器->>
通過索引來獲取每個數組元素。
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.