當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數據庫
當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數據庫
使用case
表情告訴你的每一行,如果它是有效還是無效。
SELECT foo,
case when date < CURRENT_DATE then 'ERROR 1' end,
case when date <> 'John' then 'ERROR 2' end
FROM bar
所以我必須做更多的陳述?在這種情況下,它會選擇整個數據集,對吧? –
是的,這個查詢將返回每一行。這不是你想要的嗎? – jarlh
你可以這樣做與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;
案例_expression_,而不是語句。 – jarlh
我可能會錯過不便,但爲什麼每個人都提供了兩列。爲什麼不
SELECT foo,
case
when date < CURRENT_DATE then 'ERROR 1'
when date <> 'John' then 'ERROR 2'
else 'OTHERS'
end
FROM bar
還不如一個說法?如果你需要這個級別的錯誤提升所有我建議的是,你把基於日期的第一個數據集放入臨時表並檢查行數。如果零引發錯誤1.如果不爲零,則從temp表中爲name = john選擇並執行相同的操作。 – Wheels73