postgresql 选择文本字符串数组中的x值

nhhxz33t  于 2023-01-13  发布在  PostgreSQL
关注(0)|答案(1)|浏览(130)

我在table1中有一列,其中包含用逗号分隔的名称,如a,b,c
| 人名|结果|
| - ------|- ------|
| a、d、e||
| a、c、e、f||
| c、d、f、g||

    • table2**中具有单个名称的另一列,如a或b或c

| 线|姓名|原点|
| - ------|- ------|- ------|
| 1个|项目a|美国|
| 第二章|b.人口基金|联合 Realm |
| 三个|(c)秘书长的报告|联合 Realm |
| 四个|日|澳大利亚|
| 五个|电子|加拿大|
| 六个|f级|联合 Realm |
| 七|克|联合 Realm |
如果表1.names中的任何名称位于www.example.com & origin = UK中,我想更新表1.result。table2.name & origin = UK.
尝试此操作,但出现错误;

update table1 as t1
set result = 
(select name from table2 where origin='UK') = any(string_to_array(t1.names, ','))
0yg35tkg

0yg35tkg1#

如果需要的结果是布尔值,请使用exists(...)

update table1 as t1
set result = exists(
    select name 
    from table2 
    where origin = 'UK'
    and name = any(string_to_array(t1.names, ','))
    );

db<>fiddle.中测试
如果您想获得名称,请使用string_agg()

update table1 as t1
set result = (
    select string_agg(name, ',') 
    from table2 
    where origin = 'UK'
    and name = any(string_to_array(t1.names, ','))
    );

Db<>fiddle.

相关问题