我想编写一个
Select
查询,我可以在其中查看某一列是否类似于不同表 postgresql 中另一列的一部分。
tblNames1:
身份证 | 描述 | 目标表 |
---|---|---|
1 | 选择测试.fn_hierarchy_prod_group | 测试_1 |
2 | 选择运行_更新_查询 | 测试_2 |
3 | 选择 func_datad_addr_1 | 测试_3 |
4 | 选择func_datad_addr | 测试_4 |
tblNames2:
身份证 | 描述 | 目标表 |
---|---|---|
1082 | fn_hierarchy_prod_group | dba.l |
1091 | func_datad_addr | dba.n |
1099 | fn_hierarchy_customer | dba.m |
1100 | 运行更新查询 | dba.j |
查询应返回并更新目标 tblnames1:
身份证 | 描述 | 目标表 |
---|---|---|
1 | 选择测试.fn_hierarchy_prod_group | dba.l |
2 | 选择运行_更新_查询 | dba.j |
3 | 选择 func_datad_addr_1 | 测试_3 |
4 | 选择func_datad_addr | dba.n |
我是 postgres 的新手,并且搜索了不同的方法来更新它,但我没有成功。我尝试过使用类似的查询
select *
from tblnames1 a
left join tblnames2 b on 1=1
where b.target_table like concat('%',a.target_table,'%')
但是这个查询是错误的。
Description
列,而不是 target_table
。Description
,然后在包含 SQL Description
语句的较长 select
中查找它。select a.id, a.description, b.target_table
from tblNames1 a
left join tblNames2 b
on a.description ilike concat('%',b.description,'%');
id | 描述 | 目标表 |
---|---|---|
1 | 选择测试.fn_hierarchy_prod_group | dba.l |
2 | 选择运行_更新_查询 | dba.j |
3 | 选择 func_datad_addr_1 | dba.n |
4 | 选择func_datad_addr | dba.n |
ilike
,而不是 like
。select
列中的那些 Description
语句的来源,如果它们使用不同的大小写并将其与不同的双引号结合起来,那么您可能会很难匹配它们(未加引号的会折叠为小写,引用的会保留原始内容)情况) - 在那种情况下ilike
将会是错误的。