Я работаю над Microsoft SQL Server 2005 с Transact-SQL.Угрозы/недостатки за ISNULL(), NULLIF() и COALESCE()
Я пытаюсь объединить строковые значения, исходящие из разных столбцов одной таблицы, имеющих значения NULL.
Скажет, например, таблица Person
и столбцы FirstName
, SurnamePrefix
, LegalSurname
Это случилось, что конкатенации значения строки со значением NULL (исходя из двух разных столбцов) возвращает в выходном значение NULL. Я пробовал различные сценарии для предотвращения NULL значений на выходе:
- Начиная от:
Person.FirstName + ' ' + COALESCE(RTRIM(LTRIM(Person.SurnamePrefix)) + ' ', '') + Person.LegalSurname
- Я изменил свое заявление:
COALESCE(Person.FirstName + ' ', '') + COALESCE(Person.SurnamePrefix, '') + COALESCE(' ' + Person.LegalSurname, '')
Потом я наткнулся на функции, как ISNULL()
, NULLIF()
и т.д.
Какой самый лучший и эффективный подход, чтобы показать пустые значения строк в выходе, а не NULL значения? Является ли решение затронутым версией SQL Server? (т. е. 2005, 2008 и т. д.)
2012 имеет ['CONCAT'] (http://msdn.microsoft.com/en-us/library/hh231515.aspx), где значения Null неявно преобразуются в пустую строку –