是否可以知道哪个SQL WHERE子句不匹配?

时间:2017-05-10 11:55:20

标签: sql postgresql where

当WHERE / AND子句不匹配时,我可以获得一些特定的错误消息吗?

例如:

SELECT foo
FROM bar
WHERE date >= CURRENT_DATE    /* if date < current date -> ERROR 1 */
    AND name = 'John'         /* if name not equal 'John' -> ERROR 2*/

我正在使用postgres数据库

3 个答案:

答案 0 :(得分:1)

使用case表达式告诉您每行是否有效。

SELECT foo,
       case when date < CURRENT_DATE then 'ERROR 1' end,
       case when date <> 'John' then 'ERROR 2' end
FROM bar

答案 1 :(得分:0)

您可以使用CASE声明执行此操作:

SELECT  foo,
    CASE WHEN date < current_date THEN 'ERROR 1' ELSE 'NO ERROR' END AS error_1,
    CASE WHEN name != 'John' THEN 'ERROR 2' ELSE 'NO ERROR' END AS error_2
FROM    bar;

答案 2 :(得分:0)

我可能会想念smth,但为什么每个人都提供两列?..为什么不呢

SELECT foo,
   case 
     when date < CURRENT_DATE then 'ERROR 1' 
     when date <> 'John' then 'ERROR 2'
     else 'OTHERS'
   end
FROM bar