sql语句where后面判断

请问如何在SQLserver中在where使用分支if或者case进行筛选条件的分支查询?

关于这部分翻阅我们官方技术文档,对于TSQL语句编写我们已经整理非常详细的PDF了

#firstSELECT *
FROM table_name
WHERE column_name = CASE
                        WHEN condition1 THEN value1
                        WHEN condition2 THEN value2
                        ...
                        ELSE default_value
                    END;
#second:
IF condition1
    SELECT *
    FROM table_name
    WHERE column_name = value1;
ELSEIF condition2
    SELECT *
    FROM table_name
    WHERE column_name = value2;
...
ELSE
    SELECT *
    FROM table_name
    WHERE column_name = default_value;
END IF;


select * from tb where (case when xxx then 1 when yyy then 2 ... else 0 end) in (2,4)
  • 文章:sqlserver中查询语句case when判断的用法 中也许有你想要的答案,请看下吧
  • 以下回答由chatgpt基于相关博客总结生成:

    可以通过在WHERE语句中使用IF或CASE语句来实现分支查询。具体步骤如下:

    1. 使用SELECT语句查询表中需要的数据,在FROM子句中指定要查询的表名。具体的查询语句因具体需求而异。

    2. 在WHERE子句中使用IF或CASE语句进行条件判断,筛选符合条件的数据。例如:

    IF语句:

    SELECT * FROM table WHERE IF(condition1, value1, value2) = target_value;

    其中,condition1是一个条件表达式,如果该表达式为true,则使用value1进行比较;否则,使用value2进行比较。target_value是要筛选的特定值。

    CASE语句:

    SELECT * FROM table WHERE CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 ELSE value3 END = target_value;

    其中,condition1和condition2是两个不同的条件表达式,value1、value2和value3分别是与之对应的值。如果condition1为true,则使用value1进行比较;如果condition2为true,则使用value2进行比较;否则,使用value3进行比较。

    1. 使用COUNT函数可以查询特定条件下表中数据的数量。例如:

    SELECT COUNT(column_name) FROM table WHERE condition;

    其中,column_name是要计数的列名,condition是符合要求的特定条件。

    1. 可以通过以下步骤来新建同名的数据库:

    a. 在SQL Server Management Studio中右击“Databases”,选择“New Database”;

    b. 在弹出的对话框中指定数据库名称和其它相关选项;

    c. 点击“OK”按钮以创建新的同名数据库。