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
我有以下代码:
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