【问题标题】:How to combine 'LIKE' and 'AND' Operator in SQL Statement in Oracle如何在 Oracle 的 SQL 语句中组合“LIKE”和“AND”运算符
【发布时间】: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
  • CED|UE 不匹配。是你弄错了还是你的要求是什么?
  • @Ranhiru -- C 匹配ED|UE,因为它匹配UE。它不会同时匹配EDUE,这是 OP 所暗示的。据推测,他真正追求的是记录 B。
  • 更好的解决方案是规范化您的数据模型:将所有颜色项放在单独的行中。

标签: sql oracle


【解决方案1】:

你可以试试:

SELECT * FROM test
WHERE Col2 LIKE '%ED%'
  AND Col2 LIKE '%UE%'

【讨论】:

    猜你喜欢
    • 2018-05-16
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    相关资源
    最近更新 更多