代码之家  ›  专栏  ›  技术社区  ›  OliverRadini

根据内容确定要插入的列

  •  0
  • OliverRadini  · 技术社区  · 2 年前

    想象一下,我在postgres表中有几行数据,例如:

    身份证件 价值
    1. 用户_1
    2. 区域_3
    3. 用户_2

    我想以一种使用的方式来选择值 Value 之前 _ 字符来确定要填充的列,这样结果将是:

    身份证件 使用者 区域
    1. 1. 无效的
    2. 无效的 3.
    3. 2. 无效的

    只需要有固定数量的值,这些值永远都很小。有没有一种方法可以在SQL中做到这一点?

    我可以看到,可以用不同的值填充单元格,例如 this answer ,但我找不到任何关于根据行的内容填充列的详细信息。

    我已经能够使用 left :

    SELECT
    left("Value", strpos("Value", '_') - 1) as "Type"
    

    但我看不出我将如何使用它来确定列。

    1 回复  |  直到 2 年前
        1
  •  1
  •   Bryan Dellinger    2 年前

    使用case语句。

    这是小提琴 https://www.db-fiddle.com/f/nTapovF5r5b8U4Tmjhy4tU/1

    select id, 
    case  split_part(value, '_', 1)
        when 'User' then split_part(value, '_', 2)
        end as User,
     case  split_part(value, '_', 1)
        when 'Region' then split_part(value, '_', 2)
        end as Region
    from tableone;