sql - SQL中用IF语句替换CASE语句

标签 sql sql-server

最近,我的任务是对我到达之前编码的项目进行一些重大重构。这种重构的一部分涉及检查一些存储过程并清理它们并对它们的行为进行一些常规更改。我最近遇到了以下声明:

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/

相关文章:

sql-server - 手动插入到 Identity Framework AspNetUsers 表中

SQL 几何 VS 小数(8,6) 纬度、经度性能

sql - t-sql创建用户并授予存储过程的执行权限

SQL Server - 按行号分组 - 间隙和孤岛

java - 如何在一个PrepareStatement (sqlite) 中使用Array 或List<>

c# - ORM 是用于迁移数据的正确工具吗?

MySQL GROUP BY 命令

sql - 从自连接计算

SQL 解析分隔字符串

c++ - 在 SELECT 中拆分一个 varbinary