2015-04-22 57 views
1

我在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語句或戰略,將不勝感激。

回答

2

因爲您沒有處理單詞(分隔字符串),所以全文索引不被使用。你也許可以用ngrams取得一些進展。

的基本查詢是

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

真棒!非常感謝,查詢顯得比預期簡單得多。 – thelok