如果匹配关键字,则SQL返回行

时间:2018-11-29 05:08:17

标签: sql postgresql

我有一个很大的字符串列表(在PostgreSQL数据库之外),并且我想遍历该字符串列表(循环),并想要检查字符串的任何部分是否属于表。

例如,我有以下两个表:

table name: trigger_keyword
id (int)
keyword (text)

和表2:

table name: trigger_message
id  int
message text    
trigger_keyword_id int /*this is a fk to id on trigger_keyword */

假设我们在trigger_keyword表中有关键字“天气好”,并且在trigger_message中有一条消息链接到该关键字的ID。

因此,下面是一个示例,说明了表中的内容

trigger_keyword表

id                             keyword
-----------------------------------------------------
1    weather good

trigger_message表

id   message                   trigger_keyword_id
-----------------------------------------------------
1    yes, the weather is good  1

在SQL数据库外部的一个字符串中,我们有以下句子

“阿拉斯加的天气好吗?”

我的trigger_keyword表中由于“天气好”,我可以写什么SQL返回“是的,天气好”?我需要为此使用LIKE吗?我只需要有关SQL部分的帮助。

1 个答案:

答案 0 :(得分:1)

听起来您应该使用全文搜索:

SELECT m.message
FROM trigger_keyword AS k
   JOIN trigger_message AS m ON k.id = m.trigger_keyword_id
WHERE to_tsvector('english', 'is the weather good in Alaska?')
      @@ phraseto_tsquery('english', k.keyword);