Подтвердить что ты не робот

Как выводить логическое значение в T-SQL на основе содержимого столбца?

Я сделал вид, чтобы абстрагировать столбцы разных таблиц, предварительно отфильтровать и предварительно отсортировать их. Есть один столбец, содержание которого мне не безразлично, но мне нужно знать, является ли содержимое пустым или нет. Поэтому мое представление должно передавать псевдоним как "true" в случае, если значение этого указанного столбца не равно нулю, и "false" в случае, если значение равно нулю.

Как я могу выбрать такой логический с T-SQL?

4b9b3361

Ответ 1

Для этого вам нужно использовать оператор CASE:

SELECT CASE WHEN columnName IS NULL THEN 'false' ELSE 'true' END FROM tableName;

Ответ 2

Или вы можете сделать вот так:

    SELECT RealColumn, CAST(0 AS bit) AS FakeBitColumn FROM tblTable

Ответ 3

Если вам нужен вывод в виде boolean

CAST(CASE WHEN colName IS NULL THEN 0  ELSE 1   END as BIT) aIsBooked

Ответ 4

для столбца в представлении вы можете использовать что-то вроде

CASE WHEN ColumnName is not null THEN 'True' ELSE 'False' END

или в заявлении

SELECT 
s.ID,
s.[Name],
CASE WHEN s.AchievedDate is not null THEN 'True' ELSE 'False' END [IsAchieved]
FROM Schools s

или для дальнейшей обработки впоследствии я лично использовал

SELECT 
s.ID,
s.[Name],
CASE WHEN s.AchievedDate is not null THEN 1 ELSE 0 END [IsAchieved]
FROM Schools s

Ответ 5

У меня была аналогичная проблема, когда я хотел, чтобы представление возвращало тип логического столбца на основе, если фактический столбец равен нулю или нет. Я создал определенную пользователем функцию следующим образом:

CREATE FUNCTION IsDatePopulated(@DateColumn as datetime)
RETURNS bit
AS
BEGIN
    DECLARE @ReturnBit bit;

    SELECT @ReturnBit = 
        CASE WHEN @DateColumn IS NULL 
            THEN 0 
            ELSE 1 
        END

    RETURN @ReturnBit
END

Затем созданное мной представление возвращает бит столбца, а не целое число.

CREATE VIEW testView
AS
    SELECT dbo.IsDatePopulated(DateDeleted) as [IsDeleted] 
    FROM Company

Ответ 6

Вы просили логическое значение, которое мы называем битом в t-sql.

Другие ответы дали вам varchar 'true' и 'false' или 1 и 0. 'true' и 'false', очевидно, varchar, а не логическое значение. Я полагаю, что 1 и 0 были бы разыграны как целое число, но это, конечно, не немного. Это может показаться придирчивым, но типы имеют значение довольно часто.

Чтобы получить реальное значение бита, вам нужно явно привести ваш вывод в виде бита:

select case when tableName.columnName IS NULL then cast(0 as bit) else cast(1
as bit) END as ColumnLabel from tableName