在我的 Postgres 表中,我有两列,其中一列有时有字符串,另一列是空的,但第一列中的一些字符串有时有子字符串,如果没有,我想将数据从第一列移动到另一列包含子字符串。
我有什么:
col1 | col2 |
---|---|
一些绳子 | 空 |
一些绳子 | 空 |
一些带有子串的字符串 | 空 |
一些绳子 | 空 |
空 | 空 |
一些绳子 | 空 |
我想要的:
col1 | col2 |
---|---|
空 | 一些绳子 |
空 | 一些绳子 |
一些带有子串的字符串 | 空 |
空 | 一些绳子 |
空 | 空 |
空 | 一些绳子 |
我不想选择它,我想更新所有表,因为当时该列被网络界面上的两个输入使用,并且用户在那里放置完全不同的信息,但是有一个子字符串模式,我发现,这可以帮助将数据从一列分离到另一列。我对 PostgreSQL 完全陌生,所以我需要你的建议。
您可以使用 CASE 语句来更新表。
仅当 col1 为
LIKE '%substring%'
时更新
UPDATE test
SET col2 = CASE
WHEN col1 NOT LIKE '%substring%' THEN col1
ELSE col2
END,
col1 = CASE
WHEN col1 NOT LIKE '%substring%' THEN col2
ELSE col1
END;
输出
col1 | col2 |
---|---|
空 | 一些绳子 |
空 | 一些绳子 |
一些带有子串的字符串 | 空 |
空 | 一些绳子 |
空 | 空 |
空 | 一些绳子 |