2017-02-06 2 views
0

Ich versuche, FirstName, MiddleName, LastName dann ein Komma und Suffix zu kombinieren. Ein Beispiel hier beschreibt dies:Wie werden Vorname, Nachname, Nachname, Komma und Suffix in SQL Server kombiniert?

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 

Wenn es keine Suffix ist, dann Komma (,) soll nicht auch dort angehängt werden soll nur ein Leerzeichen nach jeder Spalte sein.

Bisher habe ich versucht,

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

Nun, wie soll ich ein Komma vor dem Suffix für den Fall hinzufügen, wenn es nur ohne Fall der Verwendung besteht.

Dank

+0

Welche Version von SQL Server verwenden Sie? – Lamak

+0

@Lamak es ist 2012 – User

+0

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

Antwort

2

Sie CONCAT verwenden können:

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

Komma sollte nur dort sein, falls Suffix nicht null ist. – User

+0

@User Es wird kein Komma angehängt, weil er '+' am Ende benutzt hat. Das einzige Problem in dieser Antwort ist, es wird mehr als ein Leerzeichen geben, wenn der zweite Vorname Null ist. –

+0

@User ja, meine Antwort berücksichtigt das. Hast du es versucht? – Lamak

1

Verwendung ISNULL:

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

Dies ist die Lösung kam ich mit, versuchen Sie es und sehen, ob das für Sie gearbeitet.

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; 
Verwandte Themen