我正在研究使用 RLIKE 函数在文本块中查找某些单词的雪花查询。这是我的查询的简化版本:
SELECT id FROM table WHERE RLIKE (text,'.* red .*|.* green .*|.* blue .*','i')
我正在查询的表的一些示例:
第 1 行:id = 1, text = '桌子是红色的,很好看'
第 2 行:id = 2,文本 = '花园里有一朵红玫瑰'
第 3 行:id = 3,文本 = '我在绿色花园中看到一朵红玫瑰'
此时,查询将返回表中的所有 3 行。我想要做的是从结果中排除某个单词组合。在此示例中,我想从结果中排除“红玫瑰”,但前提是文本中的 RLIKE 列表中没有其他单词。
所以在我的结果中,应该包括 ID 1(必须包括本身的“红色”),应该排除 ID 2(“红玫瑰”组合,文本中没有其他颜色),应该包括 ID 3(即使它有“红玫瑰”,也有“绿色”,所以应该包括在内)。
有没有办法做到这一点?在此先感谢您的帮助
编辑:澄清一下,我还想在我的结果中看到“红色花园中的红玫瑰”之类的东西,因为“红色”在那里一次,而不是在“玫瑰”旁边