【发布时间】:2011-11-07 09:46:08
【问题描述】:
如何在 ORACLE 的查询中组合 'LIKE' 和 'AND' 运算符。
假设例如我有如下所示的 TEST 表:
------------------------------------
col1 | Col2
------------------------------------
A | RED
B | RED,BLUE
C | BLUE,GREEN
D | YELLOW,RED
------------------------------------
现在,如果我正在编写如下所示的查询,它将返回其中任何一个存在的所有记录,即“A、B、C、D”。
[由于这里的'OR'运算符参与了REGEXP_LIKE]
SELECT * FROM TEST WHERE REGEXP_LIKE(COL2,'ED|UE');
但我希望 AND 运算符与 LIKE 一起使用。所以它应该只返回C,它们都应该存在。
如何编写相同的查询?
【问题讨论】:
-
Wild Guess(因为我从未使用过 oracle)但类似:SELECT * FROM TEST WHERE REGEXP_LIKE(COL2,'ED') 和 REGEXP_LIKE(COL2,'UE');我猜你也可以摆脱 RegEx 并使用 like
-
C 与
ED|UE不匹配。是你弄错了还是你的要求是什么? -
@Ranhiru -- C 匹配
ED|UE,因为它匹配UE。它不会同时匹配ED和UE,这是 OP 所暗示的。据推测,他真正追求的是记录 B。 -
更好的解决方案是规范化您的数据模型:将所有颜色项放在单独的行中。