Как определить, пустое поле (не пустое), а затем выбрать другое поле, если оно?
Мне действительно нужна функция IsBlank, которая работает так же, как IsNull, но с пробелами.
REPLACE не работает с пробелами, COALESCE работает только с NULLS.
Ответ 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