我有两个表:一个包含一个列(描述),我想使用另一个表中的列(关键字)中的值进行搜索。我想执行类似
的操作select table1.description, tabl2.keyword,
case when
table1.description like `'''%'||table2.keyword||'%''' then 1
-- or contains(table1.description, table2.keyword)
else
0
end
as found
from table1, table2
Contain函数的文档似乎表明搜索参数(在我的情况下是table2.keyword)必须是一个常量(我怀疑"喜欢"也有类似的约束)。
我得到的错误消息似乎表明了这种约束。
我有可以使用的解决方案吗?
答案 0 :(得分:1)
您可以使用like
执行此操作。您的查询应该有效:
select table1.description, tabl2.keyword,
(case when table1.description like '''%'||table2.keyword||'%'''
then 1 else 0
end) as found
from table1 cross join table2;
我更喜欢显式加入,cross join
而不是,
。