模式匹配Postgres

时间:2018-10-10 10:29:41

标签: sql arrays postgresql csv

create table monument(ID int primary key,monument varchar(100);

insert into monument values(1,'Taj,Paris');
insert into monument values(2,'Taj');
insert into monument values(3,'Tajmahal,Gateway');
insert into monument values(4,'Burjkhalifa,Gateway of India');

假设我将参数传递为“ Taj,Gate”,因此我需要所有在纪念碑中包含Taj或Gate在字符串中的行。

1 个答案:

答案 0 :(得分:1)

将逗号分隔的值存储在单列中是一个巨大的设计错误。

您需要将varchar值转换为数组,才能将CSV值视为单独的元素:

select *
from monument m
where string_to_array(m.monument, ',') && string_to_array('Taj,Gate', ',');

在线示例:https://rextester.com/BJRTM46696