TSQL to return NO or YES instead TRUE or FALSE

2019-03-23 17:22发布

问题:

How can I show a different value if some columns return FALSE,

for example,

COLUMN "BASIC" returns FALSE, but I need show for the user YES or NO. Case FALSE, return NO.

回答1:

If varchar or bit, handling NULLs

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

or if just bit

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

Edit:

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";


回答2:

case when column = 'FALSE' then 'NO' else 'YES' end


回答3:

since SQL 2012 you can use IIF function

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


回答4:

Use CASE statement:

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


回答5:

Like this:

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


回答6:

You could create a user defined function so in the future you can just say something like:

select dbo.YesNo(Active) from APAccount

here is the function

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