我需要测试列值的任何部分是否在给定的字符串中,而不是该字符串是否是列值的一部分。例如:
这样,我就可以找到表中是否有任何一行包含column
中的字符串'bricks':
SELECT column FROM table
WHERE column ILIKE '%bricks%';
字符串
但我想找的是,“* 船挂在天空中的方式和砖头挂在天空中的方式差不多 *”这句话的任何一部分,是否在任何一行中。例如:
SELECT column FROM table
WHERE 'The ships hung in the sky in much the same way that bricks don’t' ILIKE '%' || column || '%';
型
因此,第一个示例中的行(其中列包含'bricks')将显示为结果。
我看了一些建议在这里和其他一些论坛,但他们都没有工作。
2条答案
按热度按时间oknrviil1#
您的简单案例可以通过使用
ANY
结构和~*
的简单查询来解决:字符串
~*
是大小写不敏感的正则表达式匹配运算符。我用它来代替ILIKE
,这样我们就可以在字符串中使用原始单词,而不需要为ILIKE
填充%
。结果是相同的-除了包含特殊字符的单词:%_\
用于ILIKE
,!$()*+.:<=>?[\]^{|}-
用于正则表达式模式。您可能需要对特殊字符进行转义以避免意外。下面是一个正则表达式的函数:但我怀疑这就是你所需要的。看我的评论。我怀疑你需要全文搜索与匹配的字典为您的自然语言提供有用的词干…
相关内容:
ru9i0ody2#
此查询:
字符串
给出以下结果:
型
现在只需对该查询的结果执行半连接即可获得所需的结果
型