当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