SQL SELECT 中使用 IF ELSE 的语句块

gre*_*ner 0 sql t-sql sql-server if-statement

我试图根据 中的变量返回不同的数据SELECT。像这样的东西:

SELECT
   IF @variable = 'YES'
      column1, column2
   ELSE
      column3
FROM TABLE
Run Code Online (Sandbox Code Playgroud)

在 SQL 中使用IF条件的正确方法是什么?或者有比我想要完成的更好的选择吗?

Lam*_*mak 5

如果您想返回不同数量的列,则需要使用IF

IF @variable = 'YES'
BEGIN
    SELECT column1, column2
    FROM YourTable
END
ELSE
BEGIN 
    SELECT column3
    FROM YourTable
END
Run Code Online (Sandbox Code Playgroud)

如果您希望同一列上有不同的数据(假设数据类型相同),您可以使用CASE

SELECT CASE WHEN @variable = 'YES' THEN column1 ELSE Column2 AS Data
FROM YourTable
Run Code Online (Sandbox Code Playgroud)