繁体   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