是否有可能知道哪个 SQL WHERE 子句不匹配?
Is it possible to know which SQL WHERE clause didn't match?
当 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 数据库
使用 case
表达式告诉您每一行是否有效。
SELECT foo,
case when date < CURRENT_DATE then 'ERROR 1' end,
case when date <> 'John' then 'ERROR 2' end
FROM bar
您可以使用 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;
我可能会想念 smth,但为什么每个人都提供两个专栏?.. 为什么不
SELECT foo,
case
when date < CURRENT_DATE then 'ERROR 1'
when date <> 'John' then 'ERROR 2'
else 'OTHERS'
end
FROM bar
当 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 数据库
使用 case
表达式告诉您每一行是否有效。
SELECT foo,
case when date < CURRENT_DATE then 'ERROR 1' end,
case when date <> 'John' then 'ERROR 2' end
FROM bar
您可以使用 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;
我可能会想念 smth,但为什么每个人都提供两个专栏?.. 为什么不
SELECT foo,
case
when date < CURRENT_DATE then 'ERROR 1'
when date <> 'John' then 'ERROR 2'
else 'OTHERS'
end
FROM bar