根据内容确定要插入的列

问题描述 投票:0回答:1

假设我在 postgres 表中有几行数据,例如:

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

我想以使用

Value
字符之前的
_
部分来确定要填充哪一列的方式来选择值,这样结果将是:

身份证 用户 地区
1 1
2 3
3 2

有没有办法在 SQL 中做到这一点?

我可以看到可以使用不同的值填充单元格,例如这个答案,但我无法找到有关根据行的内容填充列的任何详细信息。

我已经能够使用

left
:

获取值的相关部分
SELECT
left("Value", strpos("Value", '_') - 1) as "Type"

但我不知道如何使用它来确定列。

sql postgresql
1个回答
0
投票

使用 case 语句。

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

select id, user,
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;
© www.soinside.com 2019 - 2024. All rights reserved.