最近,我的任务是对我到达之前编码的项目进行一些重大重构。这种重构的一部分涉及检查一些存储过程并清理它们并对它们的行为进行一些常规更改。我最近遇到了以下声明:
IF
CASE
WHEN EXISTS
(
SELECT *
FROM users
WHERE Username = 'admin'
) THEN 1
ELSE 0
END <> 0
//Do something here
盯着这段代码看了一会儿,稍微研究了一下,最终得出结论,上面代码的逻辑可以通过写法来完成:
IF EXISTS (
SELECT *
FROM users
WHERE Username = 'admin'
)
//Do something here
所以我的问题是:使用 case 语句有什么好处?它似乎比 if 语句更笨重,而且可读性也更低。是否有我没有看到的兼容性优势?或者我说这两个查询是等效的,并且在某些情况下它们的行为会有所不同吗?
作为旁注,我并不十分关心使用 CASE 语句相对于 if 语句的性能优势。但对于那些发现自己在此页面上寻找的人来说,there's a good answer here about it .
最佳答案
如果可以假设在相对较短的时间内需要多个条件,则可维护性。
几乎是我能想出的唯一原因;)
关于sql - SQL中用IF语句替换CASE语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23941084/