Когда вы расстроены, пытаясь это:
CASE WHEN last_name IS NULL THEN '' ELSE ' '+last_name END
Попробуйте вместо этого:
CASE LEN(ISNULL(last_Name,''))
WHEN 0 THEN ''
ELSE ' ' + last_name
END AS newlastName
LEN(ISNULL(last_Name,''))
измеряетколичество символов в этом столбце, которое будет равно нулю, независимо от того, пусто оно или равно NULL, поэтому WHEN 0 THEN
будет принимать значение true и возвращать '', как и ожидалось.
Надеюсь, это полезная альтернатива.
Я включил этот тестовый пример для SQL Server 2008 и выше:
DECLARE @last_Name varchar(50) = NULL
SELECT
CASE LEN(ISNULL(@last_Name,''))
WHEN 0 THEN ''
ELSE 'A ' + @last_name
END AS newlastName
SET @last_Name = 'LastName'
SELECT
CASE LEN(ISNULL(@last_Name,''))
WHEN 0 THEN ''
ELSE 'A ' + @last_name
END AS newlastName