2017-05-10 132 views
0

當WHERE/AND子句不匹配時,我可以得到一些特定的錯誤消息嗎?是否有可能知道哪個SQL WHERE子句不匹配?

例如是這樣的:

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數據庫

+0

還不如一個說法?如果你需要這個級別的錯誤提升所有我建議的是,你把基於日期的第一個數據集放入臨時表並檢查行數。如果零引發錯誤1.如果不爲零,則從temp表中爲name = john選擇並執行相同的操作。 – Wheels73

回答

0

使用case表情告訴你的每一行,如果它是有效還是無效。

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

所以我必須做更多的陳述?在這種情況下,它會選擇整個數據集,對吧? –

+0

是的,這個查詢將返回每一行。這不是你想要的嗎? – jarlh

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; 
+0

案例_expression_,而不是語句。 – jarlh

0

我可能會錯過不便,但爲什麼每個人都提供了兩列。爲什麼不

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