我们可以在 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。
答案 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')