Все еще изучаю SQL, как избежать лишнего пробела в наборе результатов между FirstName и LastName?
FirstName
LastName
USE AdventureWorks; GO SELECT FirstName + ' ' + COALESCE (MiddleName, '') + ' ' + LastName FROM Person.Contact;
Пустое отчество и пробел приведут к нулю, поэтому:
FirstName + ' ' + COALESCE(MiddleName + ' ', '') + LastName
Должен это сделать.
Вы можете
FirstName + ' ' + COALESCE (MiddleName + ' ', '') + LastName
Учитывая, что если MiddleName равно NULL, то и MiddleName + anything
MiddleName
NULL
MiddleName + anything
try:
USE AdventureWorks; GO SELECT FirstName + COALESCE (' ' +MiddleName, '') + ' ' + LastName FROM Person.Contact;
, если MiddleName равно NULL ' '+MiddleName становится NULL и COALESCE возвращает пустую строку, что предотвращает лишний пробел.
' '+MiddleName
Лично я бы добавил пространство в функции COALESCE().Рассмотрим дополнительно обработку пустой строки:
COALESCE()
SELECT FirstName + ' ' + COALESCE(NULLIF(MiddleName, '') + ' ', '') + LastName FROM Person.Contact;