2011-11-08 61 views
12

我怎麼能顯示出不同的值,如果一些列返回FALSE,TSQL返回NO或YES,而不是TRUE或FALSE

例如,

欄中的「BASIC」返回FALSE,但我需要顯示的用戶是或否。案例FALSE,返回NO。

+0

SQL Server中沒有布爾真/假列。告訴我們BASIC列的數據類型是什麼。 – sqlvogel

回答

37

如果VARCHAR或位,處理空值

case 
    when BASIC = 'FALSE' then 'NO' 
    when BASIC <> 'FALSE' then 'YES' 
    else 'UNDEFINED' 
end 

,或者剛咬

case 
    when BASIC = 1 then 'YES' 
    when BASIC = 0 then 'NO' 
    else 'UNDEFINED' 
end 

編輯:

SELECT 
    TipoImovel_Id AS TII_SEQ, 
    Descricao AS TII_DSC, 
    Sigla AS TII_DSC_SIGLA, 
    -- choose which one you want from the answers here 
    case 
     when BASIC = 1 then 'YES' 
     when BASIC = 0 then 'NO' 
     else 'UNDEFINED' 
    end AS SomeColumnName 
FROM San_TipoImovel"; 
+0

但是我怎麼能把這個放在我的查詢中? 「SELECT TipoImovel_Id AS TII_SEQ,Descricao AS TII_DSC,Sigla AS TII_DSC_SIGLA,basic FROM San_TipoImovel」;基本我需要返回YES或NO情況是TRUE還是FALSE –

6
case when column = 'FALSE' then 'NO' else 'YES' end 
+0

但我怎麼能把這個在我的查詢? 「SELECT TipoImovel_Id AS TII_SEQ,Descricao AS TII_DSC,Sigla AS TII_DSC_SIGLA,basic FROM San_TipoImovel」;基本我需要返回YES或NO情況TRUE或FALSE –

0

使用CASE聲明:

case BASIC when 'True' then 'Yes' ELSE 'No' end 
+0

您需要將文字用單引號括起來 –

+0

@MarkKram,固定的 –

0

像這樣:

SELECT TipoImovel_Id AS TII_SEQ, Descricao AS TII_DSC, Sigla AS TII_DSC_SIGLA, case when basic = 'FALSE' then 'NO' else 'YES' end 
FROM San_TipoImovel 
0

您可以創建一個用戶定義的函數,以便在將來你可以這樣說:

select dbo.YesNo(Active) from APAccount 

這裏是功能

CREATE FUNCTION [dbo].YesNo(@Value Bit) 
    RETURNS varchar(3) 
    BEGIN 
     DECLARE @R as varchar(3) 

     SET @R = 
     (
     Select 
      case 
       when @Value = 1 then 'Yes' 
       else 'No' 
      end 
     ) 
     RETURN @R 
    END 
2

由於SQL 2012可以使用IIF功能

IIF(BASIC = 'TRUE', 'YES', 'NO')