我有一个很大的字符串列表(在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部分的帮助。
答案 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);