我正在尝试根据SELECT
中的变量返回不同的数据。像这样:
SELECT
IF @variable = 'YES'
column1, column2
ELSE
column3
FROM TABLE
在SQL中使用IF
条件的正确方法是什么?或者,有没有比我想要完成的更好的替代方案?
答案 0 :(得分:4)
如果您想返回不同数量的列,则需要使用IF
:
IF @variable = 'YES'
BEGIN
SELECT column1, column2
FROM YourTable
END
ELSE
BEGIN
SELECT column3
FROM YourTable
END
如果您想在同一列上使用不同的数据(假设数据类型相同),则可以使用CASE
:
SELECT CASE WHEN @variable = 'YES' THEN column1 ELSE Column2 AS Data
FROM YourTable
答案 1 :(得分:0)
您可以使用IF语句,但您需要设置多个查询。您可以使用CASE选择一列或另一列,但不要像问题中那样选择一个或多个。
DECLARE @var INT = 1;
DECLARE @test TABLE (
Col1 int,
Col2 int,
Col3 int
)
INSERT INTO @test VALUES (1,2,3)
IF @var = 1
BEGIN
SELECT Col1, Col2
FROM @test
END
ELSE
BEGIN
SELECT Col3
FROM @test
END