在sql中选择一个条件作为列

时间:2017-10-30 07:57:32

标签: sql sql-server tsql

我们可以在 C# Java

中输入这样的命令
return 1 < 2;

是否可以在SQL中执行类似的操作?

SELECT 1 < 2

或在我的情况下:

Select
    Case when sign = '<' then col1 < 10 else col1 > 10 end
from ...
  

结果:0

当我使用SELECT 1 < 2时出现错误:

  

Msg 102,Level 15,State 1,Line 1语法不正确&#39;&lt;&#39;。

所以这个陈述似乎有问题。我使用的是TSQL。

4 个答案:

答案 0 :(得分:1)

我不知道你在使用什么DBMS,我在这个例子中使用的是T-SQL。这应该有效:

declare @col1 int
declare @sign varchar(1)
set @col1 = 10
set @sign = '<'

Select
    case when (@sign = '<') and (@col1 < 10) then 1 
         when (@sign = '>') and (@col1 > 10) then 1
         else 0
    end

答案 1 :(得分:1)

我认为你的意思是:

DECLARE @Col1 INT = 10; --Set your value

SELECT Result = CASE WHEN @Col1 > 10 THEN CAST(@Col1 AS VARCHAR(10) ) + ' > 10'
                     WHEN @Col1 < 10 THEN CAST(@Col1 AS VARCHAR(10) ) + ' < 10'
                     ELSE CAST(@Col1 AS VARCHAR(10) ) + ' = 10'
                     END

OR

DECLARE @Col1 INT = 10;
DECLARE @VarForCompare INT = 55;

SELECT Result = CASE WHEN @Col1 > @VarForCompare THEN CAST(@Col1 AS VARCHAR(10) ) + ' > ' + CAST(@VarForCompare AS VARCHAR(10) )
                     WHEN @Col1 < @VarForCompare THEN CAST(@Col1 AS VARCHAR(10) ) + ' < ' + + CAST(@VarForCompare AS VARCHAR(10) )
                     ELSE CAST(@Col1 AS VARCHAR(10) ) + ' = ' + + CAST(@VarForCompare AS VARCHAR(10) )
                     END

或使用IF:

IF @Col1 > @VarForCompare
    SELECT CAST(@Col1 AS VARCHAR(10) ) + ' > ' + CAST(@VarForCompare AS VARCHAR(10) ) Result
        ELSE
            IF @Col1 < @VarForCompare
                SELECT CAST(@Col1 AS VARCHAR(10) ) + ' < ' + CAST(@VarForCompare AS VARCHAR(10) ) Result
                    ELSE
                            SELECT CAST(@Col1 AS VARCHAR(10) ) + ' = ' + CAST(@VarForCompare AS VARCHAR(10) ) Result

我不明白为什么你需要Sign变量。

答案 2 :(得分:1)

select case when 1 <2 then 'true' else 'false' end

答案 3 :(得分:1)

您也可以使用内联if语句而不是CASE:

SELECT IIF(1 < 2,'true','false')