如何检查数组中的任何项是否是PostgreSQL中我的表中的一列中的子字符串?

时间:2015-07-29 17:14:48

标签: sql postgresql

我不确定该怎么做:

我的数据库中有一个名为description的列。我有一个关键字列表。我想选择描述中包含列表中至少一个字符串的行。

列表是字符串,描述的类型为TEXT。

我只是不想做一个做多个LIKE的可怕蛮力方法(因为我的列表目前有50个元素)。

1 个答案:

答案 0 :(得分:0)

我认为您可以使用这样的SQL查询(只是我即时编写):

WITH tags(tag) AS (
  SELECT * FROM (VALUES ('tag1'),('tag2'),('tag3'),('tag4')) AS tags(tag))
SELECT DISTINCT description
FROM tbl
WHERE (description LIKE '%' || tag || '%');

您可以插入列表而不是('tag1'),('tag2'),('tag3'),('tag4')。你需要像"(" + replace(yorTagString, ",", "),(") + ")"这样的东西。

[SQL Fiddle Demo]