【发布时间】:2014-07-02 19:43:20
【问题描述】:
如果有人问过这个问题,我深表歉意,我无法用语言表达。
我被要求过滤掉一个字段中的文本包含在另一个字段中的查询中的行。一个例子可能会更好地解释它:
Column_1 Column_2
Low Static Static
Static Static
Static Clear
Static
Very Low Freq Freq
查询的结果应该只返回第 3 行和第 4 行,因为第 1、2 和 5 行包含相似的字符串。现在,我有以下情况:
WHERE
((Column_2 NOT LIKE '%' || Column_1 || '%')
OR (Column_1 NOT LIKE '%' || Column_2 || '%' OR Column_1 IS NULL))
但是,当我只想返回第 3 行和第 4 行时,它会返回第 1、3、4 和 5 行。这只是示例数据,我的实际数据集在第 1 列和第 2 列中包含许多不同的文本字符串,所以我可以'不只是编写特定的案例语句来排除列相似的某些实例。
也许这是不可能的,因为我无法将字符串定义为包含在 2 个空格内的内容,同时考虑到没有空格的情况?
谢谢
【问题讨论】:
-
将第一个或更改为和
WHERE (column_2 not like '%' || column_1 || '%' and column_1 not like '%' || column_2 || '%') OR Column_1 is null OR column_2 is null -
问题的标题与问题的后半部分相反,您说“我只想返回第 3 行和第 4 行”,所以我很困惑。
-
感谢您的发现。我将其更改为 AND 修复了一些情况,但我仍然得到不一致的结果,例如第 1 列 = 'Right Sound Noise' 和第 2 列 = 'Sound Noise Clear' (所以我想排除该行)。
-
“在一个字段中查找包含在另一个字段中的文本...然后排除符合条件的行”。我希望这会有所帮助。