场景
说我有一个comments
表,例如
comment_id | comment
1 | a quick fox jumped over the lazy dog
2 | a lazy bull slept in the chicken den
我有一个keywords
表,
animal_id | keyword
1 | bull
2 | chicken
3 | dog
4 | fox
问题
是否可以对显示的关键字进行搜索注释?像instr(comments.comment, keywords.keyword)
这样的东西?
是否可以像这样从表中返回匹配的关键字
comment_id | animal_id
1 | 3
1 | 4
2 | 1
2 | 2
答案 0 :(得分:1)
如果sqllite的版本大于 3.7.x ,则可以将 instr 函数用作demo。 Instr 函数在字符串中搜索子字符串,并返回该子字符串的索引(该子字符串的第一个字符)的整数。您可以查看http://www.sqlitetutorial.net/sqlite-functions/sqlite-instr/
select com.comment_id, kword.animal_id
from comments com
join keywords kword on instr(com.comment, kword.keyword)
答案 1 :(得分:0)
您必须加入表并使用LIKE运算符:
select
c.comment_id, k.animal_id
from comments c inner join keywords k
on ' ' || c.comment || ' ' like '% ' || k.keyword || ' %'
需要将comment
和keyword
中的空格串联起来,以确保keyword
不仅是注释中单词的一部分。
请参见demo。
结果:
| comment_id | animal_id |
| ---------- | --------- |
| 1 | 3 |
| 1 | 4 |
| 2 | 1 |
| 2 | 2 |
答案 2 :(得分:0)