我们要做的是为“任意字”类型的匹配创建文本搜索。该表的设置如下:
ID | Keyword
-------------
1 | alpha, beta, charlie
2 | bravo, delta, echo
3 | alpha, delta, foxtrot
到目前为止我们尝试过的查询是这样的:
SELECT keyword FROM KeywordTest
WHERE keyword
IN (select Value FRom split('alpha, beta, charlie',','))
我们认为会发生的是我们会得到两个结果,一个用于ID 1,另一个用于ID 3.但这不是我们只获得ID 1的情况。
我做错了什么,我怎么能调整这个查询以带回一个作为参数传入的'Any Words'的匹配。
谢谢!
答案 0 :(得分:3)
问题出在哪里,因为关键字在IN中没有选择,关键字是LIKE选择。您可以尝试使用INNER JOIN:
SELECT keyword
FROM KeywordTest a inner join
split('alpha, beta, charlie',',') b on a.keyword like '%'+Value+'%'
答案 1 :(得分:1)
我实际上只是解决了一个非常类似的问题。
我相信你想要研究的是SQL的LIKE关键字。
SELECT keyword FROM KeywordTest
WHERE keyword LIKE %'alpha'%
注意,您可能需要通过分隔符进行某种拆分,以将搜索结果全部放入LIKE查询中。 (如果你需要,我也可以提供帮助)
另外,请记住,%是外卡。在搜索条件之前和之后放置%,将在任何上下文中找到该字符串。
如果我们把WHERE Keyword LIKE'alpha'%,我们只会找到以alpha开头的结果。