2017-02-06 60 views
0

我想要結合FirstName,MiddleName,LastName,然後逗號和後綴。 一個例子在這裏描述的:如何在SQL Server中結合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 + ' ', '')),' ',' ') 

現在應該怎麼以防前後綴添加一個逗號,如果只存在,它不使用的情況下。

感謝

+0

您使用的是哪個版本的SQL Server? – Lamak

+0

@Lamak它是2012 – User

+0

'coalesce(','+ suffixid)'? –

回答

2

您可以使用CONCAT

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

只有在後綴不爲空的情況下,逗號纔會出現。 – User

+0

@User它不會追加逗號,因爲他最後使用了'+'。在這個答案中唯一的問題是,如果中間名爲空,將會有多個空格。 –

+0

@用戶是的,我的回答考慮到了這一點,你試過了嗎? – Lamak

1

使用ISNULL:

SELECT ISNULL(FirstName + ' ', '') + ISNULL(MiddleName + ' ', '') + ISNULL(LastName + ' ', '') + ISNULL(', ' + SuffixId, '') 
    FROM My_Table_Name 
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; 
相關問題