2017-02-06 3 views
0

私はFirstName、MiddleName、LastName、カンマとサフィックスを組み合わせようとしています。何Suffixが存在しない場合は、カンマ(,は)すべての列の後に一つだけのスペースがあるはずも追加するべきではありません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 

:ここ の例では、これを説明します。

は、これまでのところ、私は今、それが唯一のケースを使用せずに存在している場合、私は場合には、接尾辞の前にコンマを追加する必要がありますどのように

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

を試してみました。あなたはCONCATを使用することができます

おかげ

+0

どのバージョンのSQL Serverを使用していますか? – Lamak

+0

@Lamak it's 2012 – User

+0

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

答えて

2

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

接尾辞がヌルでない場合は、カンマはそこに置く必要があります。 – User

+0

@User最後に '+'を使用しているのでカンマを追加しません。この回答の問題は、中間の名前がnullの場合は複数のスペースがあります –

+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; 
関連する問題