Как вернуть логическое значение из запроса при оценке состояния?

Мне нужно что-то вроде этого:

select (len(someLongTextColumn)=0) as isEmpty;

Вышеуказанное не работает,

любые альтернативы?

Ответ 1

Попробуйте это.

SELECT (CASE WHEN LEN(SomeLongTextColumn) = 0 THEN 1 ELSE 0 END) AS IsEmtpy

@gbn имеет хорошее объяснение того, как вернуть логическое значение.

Ответ 2

Если вы отбрасываете бит, тогда большинство клиентских кодов могут читать его как boolean напрямую (SQL Server не имеет типа boolean)

SELECT
    CAST(
        CASE
           WHEN len(someLongTextColumn) = 0 THEN 1 ELSE 0
        END AS bit
        ) as isEmpty;

если у вас много за один проход, используйте битовые переменные следующим образом: Предположим, что бит с константой 1 или 0 в SQL Server

Ответ 3

В MS SQL 2012 и более поздних версиях вы можете использовать IIF как сокращенное название:

select IIF(len(someLongTextColumn) = 0, 1, 0) as isEmpty;

Ответ 4

SQL Server:

SELECT CONVERT(BIT, 1) -- true
SELECT CONVERT(BIT, 0) -- false