Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

A cláusula CASE WHEN in WHERE está falhando com uma palavra-chave ausente de erro


Você não pode usar um CASE expressão como essa como THEN cláusula espera uma única expressão e não uma comparação. Em vez disso, você deseja:
SELECT DISTINCT
       LOGINID
FROM   EMPLOYEES
WHERE  EmployeeCode NOT IN ('L35', 'L36')
AND    (  CREATE_DT >= DATE '2020-05-07'
       OR XML_VAL NOT LIKE '%<Product>%' )

Se você realmente deseja usar um CASE expressão, então isso seria sintaticamente válido:
CASE
WHEN CREATE_DT < TO_DATE('07-MAY-20', 'DD-MON-RR', 'NLS_DATE_LANGUAGE=American')
THEN XML_VAL
ELSE NULL
END NOT LIKE '%<Product>%'