使用表作为输入来查询子字符串

时间:2015-04-22 22:39:15

标签: sql postgresql

我在PostgreSQL中有一个很大的单词表,它有一个操作映射到一个数字,如果单词匹配它应该执行。例如:

  words_table
words | operation
-----------------
fox   |    1
brown |    2
cow   |    1
moo   |    3
...

我希望能够提供一个字符串,并查看表中的operations是输入的子字符串,忽略大小写。例如,两个输入字符串:

How brown are your cows and foxes?
Howbrownareyourcowsandfoxes?

会返回1, 2。这对我来说是一个不寻常的问题,因为我想使用单词表作为"输入"的数据。我意识到这个操作将导致全表扫描,我需要做一个operations的联合/不同,但我不知道如何启动我的查询/子查询(我想象我必须在某处使用CONTAINS / LIKE子查询)使表成为检查子字符串的输入。

任何制定SQL语句或策略的帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

因为您没有处理单词(分隔的字符串),所以不使用全文索引。您可以在ngrams上取得一些进展。

基本查询是

select distinct wt.operation
from words_table wt
where YOURSTRING like '%' || wt.words || '%';