簡體   English   中英

選擇條件作為sql中的列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM