将两个字段组合成一个字段,其间有空格

时间:2014-05-15 01:07:59

标签: sql sql-server concatenation

我一直试图将名字和姓氏合并到一个字段中,例如John Doe之间的空格。

当我做以下连续时,我得到John Doe而不是John Doe

SELECT     LTRIM(RTRIM(dbo.gpEmployeeList.firstName)) AS [First Name], LTRIM(RTRIM(dbo.gpEmployeeList.LASTNAME)) AS [Last Name], 
                      dbo.gpEmployeeList.SecurityCode AS [Security Code], dbo.gpEmployeeList.PTO AS [Available PTO], { fn CONCAT(LTRIM(RTRIM(dbo.gpEmployeeList.firstName)), 
                      dbo.gpEmployeeList.LASTNAME) } AS DisplayName
FROM         dbo.MonthName INNER JOIN
                      dbo.gpEmployeeList ON dbo.MonthName.monthNumber = dbo.gpEmployeeList.BIRTHMONTH LEFT OUTER JOIN
                      dbo.domainAccounts ON dbo.gpEmployeeList.LASTNAME = dbo.domainAccounts.sn

有任何修复建议吗?我必须修剪以消除名称之间的混乱空间。

2 个答案:

答案 0 :(得分:0)

你可以使用其中任何一个:

1- SELECT LTRIM(RTRIM(firstName))AS [名字],LTRIM(RTRIM(lastName))AS [姓氏],                    {fn CONCAT({fn CONCAT(firstName,'')},lastName)} AS DisplayName 来自你的表

OR

2- SELECT LTRIM(RTRIM(firstName))AS [名字],LTRIM(RTRIM(lastName))AS [姓氏],                    firstName +''+ lastName AS DisplayName 来自你的表

答案 1 :(得分:0)

CONCAT是SQL Sever 2012功能,在以前的版本中不存在。如果运行sgeddes创建的sqlfiddle(设置为MS SQL Sever 2012),则运行查询。但是,如果将其更改为MS SQL sever 2008并重建架构,则会引发错误。我假设你没有运行2012,因为你得到了一个concat错误。

http://msdn.microsoft.com/en-us/library/hh231515.aspx

将功能包装在括号中会使其正常工作,但我认为不需要。

SOCALNoob击中头部的钉子。 +会很好地将列和文本组合在一起。我不明白为什么以下不起作用。

 LTRIM(RTRIM(dbo.gpEmployeeList.firstName)) + ' ' + dbo.gpEmployeeList.LASTNAME) AS DisplayName