gpt4 book ai didi

postgresql - 在迁移中将列拆分为两列

转载 作者:行者123 更新时间:2023-11-29 14:15:19 24 4
gpt4 key购买 nike

我是 postgresql 的新手,并且找到了一些关于如何在选择而非迁移中执行此操作的信息。我有一个用户数据库,其中有一个名称列,我想将其变成名字和姓氏列。以下是一些示例名称以及我希望如何在我的用户信息表中转换它们:

name
------
"first last"
"first double last-name"
"first"
"No Name Available"

first_name            | last_name
----------------------|------------
"first" | "last"
"first" | "double last-name"
"first" | ""
"No Name Available" | ""

本质上,我想在迁移中将名称拆分为第一个空格上的名字和姓氏,名称不包含空格,姓氏为空字符串,除非名称等于“无可用名称”,在这种情况下我想将 first_name 设置为“No Name Available”,将 last_name 设置为“”。这是我所有的:

alter table UserInfo
add column first_name text UserInfo on delete cascade,
add column last_name text UserInfo on delete cascade

--;;

update UserInfo
set first_name = ???
set last_name = ???

--;;

alter table UserInfo
alter column first_name set not null,
alter column last_name set not null,
drop column name

感谢任何帮助,包括部分解决方案;我不太确定如何开始。

最佳答案

首先创建以 first_name 和 last_name 作为列的用户表,然后使用 insert 运行它

select 
case when name != 'No Name Available' then
SPLIT_PART(name, ' ', 1)
else
'No Name Available'
end as first_name,
case when name != 'No Name Available' then
SPLIT_PART(name, SPLIT_PART(name, ' ', 1), 2)
else
'' end as last_name
from users

假设users是当前表的名称,以name为列

关于postgresql - 在迁移中将列拆分为两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50730792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com