当前位置: 首页 > 知识库问答 >
问题:

如何使用SQL将一列拆分成多列

魏君博
2023-03-14

我有一个列,其中包含该列的名称和值,格式如下:

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

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

问题是这些值在整个列中并不一致,有时我会有这些值的组合,有时没有,有时只有一个,但顺序如何并不重要,所有这些列都必须创建。怎样才能用一种通用的方式调用它们,而不用像这样指定值:

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

共有1个答案

陆才俊
2023-03-14

在这种情况下,我必须创建一个列类型JSON,如下图所示

然后,您可以将此键值存储为JSON数组,并在要再次使用此数据时对其进行解码。

缺点是您不能直接从数据库中搜索这个数组

更新:如何在redshift上使用JSON https://docs . AWS . Amazon . com/redshift/latest/DG/JSON-functions . html

 类似资料:
  • 问题内容: 我有一个具有这种结构的表。 我无法弄清楚我将使用哪种SQL查询来获得这样的结果集: 我正在尝试将三列分为三个单独的行。这可能吗? 问题答案: SELECT Y.UserID, Y.UserName, QuestionName = ‘AnswerToQuestion’ + X.Which, Response = CASE X.Which WHEN ‘1’ THEN AnswerToQue

  • 我有: 我想要: 似乎在scala中我可以写:< code>df.select($"value。_1 ",$ "值。_2 ",$ "值。_3"),但这在python中是不可能的。 那么有没有好的办法呢?

  • 我有一个包含N个字段的数据框,如下所述。列的数量和值的长度将有所不同。 输入表: 我必须用一个序列列将其转换为以下格式。 预期输出表: 我尝试过使用explode,但explode一次只能使用一个数组。 有人知道我怎么做吗?谢谢你的帮助。

  • 问题内容: 使用MySQL查询,如何像示例A那样获取表: 并创建一个类似于示例B的视图? 问题答案: 您可以简单地使用函数: 看到这个SQLFiddle 如果您的 班级 数目未知,请尝试此动态查询 输出: 看到这个SQLFiddle

  • 我有一个这样的文本文件: 输入文件中的最后一个字段的长度为50k个字符,并且只有0、1或2个字符。我想要最后一个字段的一个热编码版本。因此,我的预期结果是这样的数据帧: 我通过读取输入文件创建了一个初始数据帧: 这将创建一个包含3列的数据帧: 我想我也许可以使用下面的东西创建初始的单独列,然后使用熊猫get_dummies函数进行一次热编码,但是我无法创建单独的列。我已经试过了 但这并不是把角色分

  • 我有一个表,其中包括一个CLOB字段,该字段的值由逗号分隔的行组成。在输出中,我希望每行都有一行,这些行以一个特定的值开始。我还想从性能上提取一些逗号分隔的值。 输入表(3行): 'm'将源字符串视为多行。Oracle将插入符号(^)和美元符号($)分别解释为源字符串中任意行的开始和结束 这些有什么问题吗?或者更好的是,没有Regex还有更好的性能吗?