如何在SQL Server中组合FirstName,MiddleName,LastName,逗号和后缀?

时间:2017-02-06 14:54:06

标签: sql-server sql-server-2012 coalesce isnull

我正在尝试将FirstName,MiddleName,LastName和逗号和后缀组合在一起。 这里的一个例子描述了这个:

Sno. FirstName  MiddleName  LastName        Suffix    Result
---------------------------------------------------------------
1.   ROBERT     NULL        SMALLWOOD       NULL      ROBERT SMALLWOOD
2.   KIRK       NULL        ROBERTS         MR        KIRK ROBERTS, MR
3.   WILLIAM    DARRELL     WATTENBARGER    Jr.       WILLIAM DARRELL WATTENBARGER, MR

如果没有Suffix,则不应附加逗号(,),并且每列之后应该只有一个空格。

到目前为止,我试过

REPLACE(RTRIM(Coalesce(FirstName + ' ', '') + Coalesce(MiddleName + ' ', '') + Coalesce(LastName + ' ', '') + Coalesce(SuffixId + ' ', '')),'  ',' ')

现在我应该在后缀之前添加一个逗号,以防它只存在而不使用大小写。

由于

4 个答案:

答案 0 :(得分:3)

您可以使用CONCAT

SELECT CONCAT(FirstName,' ',MiddleName + ' ' ,LastName,', '+NULLIF(Suffix,'')) [Result]
FROM dbo.YourTable;

答案 1 :(得分:1)

使用ISNULL:

SELECT ISNULL(FirstName + ' ', '') + ISNULL(MiddleName + ' ', '') + ISNULL(LastName + ' ', '') + ISNULL(', ' + SuffixId, '') 
    FROM My_Table_Name

答案 2 :(得分:0)

这是我提出的解决方案,请试着看看这对你有用。

create table #FullNameCalculation
(
    Sno int not null,
    FirstName varchar(10),
    MiddleName varchar(10),
    LastName varchar(15),
    Suffix varchar(5)
)

insert into #FullNameCalculation
    (Sno,FirstName,MiddleName,LastName,Suffix) 
values
    (1, 'ROBERT', NULL,'SMALLWOOD', NULL),
    (2, 'KIRK', NULL, 'ROBERTS', 'MR'),
    (3,'WILLIAM', 'DARRELL', 'WATTENBARGER', 'JR.'),
    (4,NULL,'BARBER','SINK','MS'),
    (5,NULL,NULL,'SANDERS','MRS.'),
    (6,'SARA',' D','WILLIAMS ',' MS');

SELECT * FROM #FullNameCalculation;

SELECT *, 
    RTRIM(LTRIM(CONCAT(RTRIM(LTRIM(FirstName)),' ',
                       RTRIM(LTRIM(MiddleName)),' ',
                       RTRIM(LTRIM(LastName)),
                       iif(RTRIM(LTRIM(Suffix)) IS NULL OR RTRIM(LTRIM(Suffix))='','',', '+RTRIM(LTRIM(Suffix)))))) AS FullName 
FROM #FullNameCalculation;

答案 3 :(得分:0)

我想做类似的事情,并且我使用过COALESCE之类的OP。使用Mark Adelsberger的建议,我的查询如下:

SELECT 
    RTrim(Coalesce(FirstName + ' ', '')
        + Coalesce(MiddleName + ' ', '')
        + Coalesce(LastName + ' ', '')
        + Coalesce(', ' + Suffix, '')) FullName
FROM dbo.YourTable