PostgreSQL:字符串列之间的部分匹配

PostgreSQL: Partial match between string columns

我有以下代码:

with my_table (id, col_1, col_2)
as (values 
(1, '$ (USD)', '$ (USD) million'),
(2, '$ (USD)', '$ (USD)'),
(3, 'USD', '$ (USD)'),
(4, 'EUR', '$ (USD)')
)

select *,
     case when col_1 = col_2 then 'TRUE'
     else 'FALSE'
     end as is_a_match
from my_table

输出:

id   col_1      col_2              is_a_match
1    $ (USD)    $ (USD) million    FALSE
2    $ (USD)    $ (USD)            TRUE
3    USD        $ (USD)            FALSE
4    EUR        $ (USD)            FALSE

如何编辑查询,使 id 1、2、3 为 TRUE,id 4 为 FALSE?我希望它是通用的,所以如果有其他货币,它也可以寻找部分匹配。

您可以使用 strpos() 检查 col_1 中的字符串是否出现在 col_2 中的任何位置:

select *,
       strpos(col_2, col_1) > 0 as is_a_match
from my_table