SQL Server: объединить, предотвратить лишнее пространство? - PullRequest
2 голосов
/ 16 июня 2011

Все еще изучаю SQL, как избежать лишнего пробела в наборе результатов между FirstName и LastName?

USE AdventureWorks;
GO

SELECT FirstName + ' ' + COALESCE (MiddleName, '') + ' ' + LastName
FROM   Person.Contact;

Ответы [ 4 ]

3 голосов
/ 16 июня 2011

Пустое отчество и пробел приведут к нулю, поэтому:

FirstName + ' ' + COALESCE(MiddleName + ' ', '') + LastName

Должен это сделать.

3 голосов
/ 16 июня 2011

Вы можете

FirstName + ' ' + COALESCE (MiddleName + ' ', '') + LastName

Учитывая, что если MiddleName равно NULL, то и MiddleName + anything

3 голосов
/ 16 июня 2011

try:

USE AdventureWorks;
GO

SELECT FirstName +  COALESCE (' ' +MiddleName, '') + ' ' + LastName
FROM   Person.Contact;

, если MiddleName равно NULL ' '+MiddleName становится NULL и COALESCE возвращает пустую строку, что предотвращает лишний пробел.

0 голосов
/ 16 июня 2011

Лично я бы добавил пространство в функции COALESCE().Рассмотрим дополнительно обработку пустой строки:

SELECT FirstName + ' ' 
          + COALESCE(NULLIF(MiddleName, '') + ' ', '') 
          + LastName
  FROM Person.Contact;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...