我正在使用Postgres 9.5。我有一个带有label
列的表...
Table "public.article"
Column | Type | Modifiers
--------------------------------+--------------------------+----------------------------------------------------------------
...
label | text |
然后我有另一个带有特定单词的表...
mydb=> \d keyword;
Table "public.keyword"
Column | Type | Modifiers
--------+------------------------+--------------------------------------------------------------
id | integer | not null default nextval('keyword_id_seq'::regclass)
word | character varying(200) | not null
如何编写查询以检查article
的{{1}}是否包含(以不区分大小写的方式)label
中的word
中的一个keyword
表?如果可以帮助加快速度,我愿意更改每种数据类型。
答案 0 :(得分:0)
您可以使用ILIKE
进行不区分大小写的模式匹配:
SELECT a.label
FROM article AS a
JOIN keyword AS k
ON a.label ILIKE '%' || l.word || '%';
如果两个表都很大,这将很慢,因为只能使用嵌套循环联接。我认为这是无法避免的。