sql - 如果匹配关键字,SQL 返回行
问题描述
我有一个很大的字符串列表(在 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 数据库之外的一个字符串中,我们有以下句子
“阿拉斯加的天气好吗?”
我可以写什么 SQL 来返回“是的,天气很好”,因为“天气很好”在我们的trigger_keyword
表中?我需要为此使用LIKE
吗?我只需要 SQL 部分的帮助。
解决方案
听起来您应该使用全文搜索:
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);
推荐阅读
- mysql - MySQL 错误 2003 (HY000):可以从 127.0.0.1 连接,但不能通过 192.168.1.53
- arduino - 无效使用非静态错误成员函数arduino
- visual-studio-code - VSCode Dotnet Core 将项目移动到新文件夹
- serilog - SERILOG:ForContext 和和之间的区别
- c# - 如何在 asp.net startup.cs 中制作动态 sql 字符串?
- javascript - 使用 vue 和 node js 将 JSON 文件上传到我的服务器
- javascript - 从按对象标识符分组的列表中查找最小值/最大值
- excel - 将两列中的数据复制到一列 - Excel
- python - 从 Beautifulsoup4 获取字符串的问题
- amcharts - 工具提示没有反映我想要的。安查特