sql - SQL 中的 IF ELSE 语句

标签 sql

SELECT S.Id, S.Name, S.Version, S.SoftNo
FROM SOFTWARE S WITH(NOLOCK)
WHERE (IF S.Version = 0 THEN S.Version > 0 ELSE S.Version = @Version)
AND (IF S.SoftNo = 0 THEN S.SoftNo > 0 ELSE S.SoftNo = @SoftNo)

如果 Version 等于 0,我想列出所有版本号大于 0 的内容,如果版本号不等于 0,则 Version 应该是任何值。

这与 SoftNo 相同。

如何修复我的 SQL 查询。这根本行不通。

更多详细信息:

这就是我想要实现的目标:

if(Version == 0)
{
     display every single rows if their version number is greater then 0;
}
else
{
     Lets assume that Version is equal to 5. Then just display the rows if their Version number is equal to 5;
} // This is like a C# code of what I am trying to do in my sql query.

最佳答案

尝试这样的事情:

SELECT S.Id, S.Name, S.Version, S.SoftNo
FROM SOFTWARE S WITH(NOLOCK)
WHERE ((@Version = 0 AND S.Version > 0) OR 
       (@Version <> 0 AND S.Version = @Version)) AND 
      ((@SoftNo = 0 AND S.SoftNo > 0) OR 
       (@SoftNo <> 0 AND S.SoftNo = @SoftNo))

关于sql - SQL 中的 IF ELSE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9870009/

相关文章:

php - Mysql 查询在 SQL 语法正确时显示错误

sql - ORACLE where 子句的案例

找不到 phpmyadmin 主机!

mysql - 根据多表条件从表中删除条目

java - 如何使用 SQL 或 JPA 确定记录的层次结构

mysql - 如何按用户帐户过滤mysql审计日志

sql - Postgresql - 复制行并将 uid 设置为新列

sql - PostgreSQL 删除除最旧记录以外的所有记录

sql - 如何使用 Join(链接服务器)进行更新

MYSQL:在值不是特定值的情况下获取字段的平均值