在同一列上使用带有两种条件的Where子句

时间:2018-08-07 05:27:53

标签: sql oracle

我确实有一个类似下面的查询,并且希望在此Select查询中包含另一个条件。

我需要为Column7添加一个条件,即仅当Column9不是某些值的模式时,才应选择value为“ FALSE”。说column9不像'abcd%'。

基本上我希望当Column9具有某种模式时,此查询不按Column7的条件将记录过滤为FALSE。

查询-

SELECT column1, column2, column3
FROM schema.table1 
WHERE
    column4 > TO_DATE('2018-02-02', 'yyyy-MM-dd')
    AND column5 IS NULL
    AND column6 IS NOT NULL
    AND Column7 = 'FALSE'
    AND Column8 <> '111111';

3 个答案:

答案 0 :(得分:3)

尝试以下查询:

SELECT column1, column2, column3
FROM schema.table1 
WHERE
    column4 > TO_DATE('2018-02-02', 'yyyy-MM-dd')
    AND column5 IS NULL
    AND column6 IS NOT NULL
    AND (Column9 LIKE 'abcd%' OR Column7 = 'FALSE')
    AND Column8 <> '111111';

SQL Server

答案 1 :(得分:0)

在您的AND子句中使用WHERE条件:

SELECT column1, column2, column3
FROM schema.table1 
WHERE
    column4 > TO_DATE('2018-02-02', 'yyyy-MM-dd') AND
    column5 IS NULL AND
    column6 IS NOT NULL AND
    (Column7 = 'TRUE' OR Column9 NOT LIKE 'abcd%') AND
    Column8 <> '111111' ;

答案 2 :(得分:0)

您还可以将 REGEXP_LIKE 用于匹配:-

SELECT column1, column2, column3
FROM schema.table1 
WHERE
    column4 > TO_DATE('2018-02-02', 'yyyy-MM-dd')
    AND column5 IS NULL
    AND column6 IS NOT NULL
    AND ( not REGEXP_LIKE (Column9, 'abcd[a-z]*', 'c') OR Column7 = 'FALSE')
    AND Column8 <> '111111';