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

Выберите столбец, если пустой выбор из другого

Как определить, пустое поле (не пустое), а затем выбрать другое поле, если оно?

Мне действительно нужна функция IsBlank, которая работает так же, как IsNull, но с пробелами.

REPLACE не работает с пробелами, COALESCE работает только с NULLS.

4b9b3361

Ответ 1

Как насчет объединения COALESCE и NULLIF.

SELECT COALESCE(NULLIF(SomeColumn,''), ReplacementColumn)
FROM SomeTable

Ответ 2

Вы можете использовать оператор CASE для этого

select 
Case WHEN Column1 = '' OR Column1 IS NULL OR LEN (TRIM (Column1))  = 0 
     THEN Column2 
     ELSE Column1 END as ColumnName
from TableName

Ответ 3

EDIT: вы не можете использовать IF() в mssql.

Используйте оператор IF в части SELECT вашего SQL:

SELECT IF(field1 != '', field1, field2) AS myfield FROM ...

Ответ 4

Вы всегда можете написать функцию isBlank(), что-то вроде

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION isBlank
(
    @CheckExpression varchar, @ReplacementExpression varchar
)
RETURNS varchar
AS
BEGIN
    IF @CheckExpression IS NOT NULL
    BEGIN
        IF @CheckExpression='' or LEN(@CheckExpression) = 0
        RETURN @ReplacementExpression
    ELSE
        RETURN @CheckExpression
    END

    RETURN @ReplacementExpression
END
GO