簡體   English   中英

如何使用 SQL 將一列拆分為多列

[英]How to split a column into multiple columns using SQL

我有一個列,其中包含列的名稱和該列的值,格式如下:

column_name
name1: value1 name2: valu2 name3: value3 name4: value4 name5: value5

我不想使用上面的設置,而是希望使用以下格式的列:

名稱1 名稱2 名稱3 名稱4 名稱5
價值1 價值2 價值3 價值4 價值5

問題是這些值在整個列中不一致,有時我會有這些值的組合,有時沒有,有時只有一個,但不管順序如何,所有這些列都必須是創建的。 如何以我不必指定這樣的值的通用方式調用它們:

CASE WHEN CHARINDEX(' ',column_name)>0 
         then SUBSTRING(column_name,1,CHARINDEX(' ',column_name)-1) 
         else column_name end name1, 
    CASE WHEN CHARINDEX(' ',column_name) > 0 
         THEN SUBSTRING(column_name,CHARINDEX(' ',column_name)+1,len(column_name))  
         ELSE NULL END as name2

在這種情況下,我必須創建一個列類型JSON如下圖所示

然后您可以將此鍵值存儲為 JSON 數組,並在您想再次使用此數據時對其進行解碼。

缺點是你不能直接從數據庫中搜索這個數組。

更新:如何在紅移上使用 JSON https://docs.aws.amazon.com/redshift/latest/dg/json-functions.ZFC35FDC70D5FC69D269883A822C7A53E

暫無
暫無

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

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