SQL Server:合并,防止额外的空间?

时间:2011-06-16 13:11:06

标签: sql sql-server tsql sql-server-2008

还在学习SQL,如何防止FirstNameLastName之间结果集中的额外空间?

USE AdventureWorks;
GO

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

4 个答案:

答案 0 :(得分:3)

尝试:

USE AdventureWorks;
GO

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

如果MiddleName为NULL ' '+MiddleName变为NULL,则COALESCE返回空字符串,这会阻止额外的空间。

答案 1 :(得分:3)

空中间名加空格将导致null,因此:

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

应该这样做。

答案 2 :(得分:3)

你可以

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

如果MiddleNameNULL,那么MiddleName + anything

答案 3 :(得分:-1)

就个人而言,我会在COALESCE()函数中附加空格。考虑另外处理空字符串:

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