【发布时间】:2017-08-17 14:37:36
【问题描述】:
我需要测试列值的任何部分是否在给定字符串中,而不是字符串是否是列值的一部分。 例如:
这样,我可以找到我的表中的任何行是否包含column 中的字符串'bricks':
SELECT column FROM table
WHERE column ILIKE '%bricks%';
但我正在寻找的是找出句子“The ships hang in the sky in much the same way that bricks don't”这句话的任何部分行。 比如:
SELECT column FROM table
WHERE 'The ships hung in the sky in much the same way that bricks don’t' ILIKE '%' || column || '%';
因此,第一个示例中包含“砖块”的行将作为结果显示。
我已经浏览了这里和其他一些论坛的一些建议,但都没有奏效。
【问题讨论】:
-
我觉得很好,here 是一个演示
-
@Lamak 我认为他们想将句子拆分成单独的单词并检查这些单词中的任何一个是否以任何顺序出现在表格列中。我认为我们需要将字符串拆分为行,然后简单地检查每个行是否存在
-
@xQbert 啊,你可能是对的。
-
@douglas_forsell 我会使用stackoverflow.com/questions/29419993/… 将字符串拆分为行以开始,然后从那里开始。通过加入等。
-
你真的想匹配'bricks',而不是词干'brick'吗?你真的想考虑像“the”或“in”这样的干扰词吗?
column到底包含了什么?作为总是,首先提供您的 Postgres 版本和准确的表定义。
标签: sql postgresql pattern-matching sql-like