[英]select a condition as column in sql
因為我們可以在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
我得到一個錯誤:
消息102,級別15,狀態1,行1'<'附近的語法不正確。
因此,該語句似乎有問題。 我正在使用TSQL。
我不知道您正在使用什么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
我想你的意思是:
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
要么
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
變量。
select case when 1 <2 then 'true' else 'false' end
您還可以使用內聯if語句代替CASE:
SELECT IIF(1 < 2,'true','false')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.