2016-07-12 6 views
1

私はこれが含まれているSQLを持っている:MySQLは、連結方式まず、中東および最終

CONCAT(
     tblpeople.FirstName , 
     ' ' , 

    IF(
     tblpeople.Middle <> '' , 
     tblpeople.Middle , 
     '' 
    ) , 
    ' ' , 
    tblpeople.LastName , 

IF(
    tblpeople.NameSuffix <> '' , 
    Concat(', ' , tblpeople.NameSuffix) , 
    '' 
) 
    ) AS `Name` , 

ミドル・フィールドがNULLであるか「」それはスペースを挿入し、だから、ヌルで名前が見えるならば、問題がありますlike: FirstName__LastName(2スペース)。

答えて

0

MySQLが重いのほとんどの世話をきちんとした組み込み関数concat_wsを持つ関数)あなたも(CONCAT_WSについて読みたいとあなたはまた、順序を変更することができる。この

concat_ws(' ',FirstName,MiddleName,LastName) as Name; 

を試してみてくださいnull Sをスキップすることによって、あなたのために持ち上げる:

CONCAT_WS(' ', FirstName, Middle, LastName) 

あなたが車を取る必要がありますので、それは、しかし、空の文字列をスキップしません。明示的に、例えば、case発現とそれのE:

CONCAT_WS(' ', 
      CASE FirstName WHEN '' THEN NULL ELSE FirstName END, 
      CASE Middle WHEN '' THEN NULL ELSE Middle END, 
      CASE LastName WHEN '' THEN NULL ELSE LastName END) 
0

私はこれが役立つと確信しています。

Replace(CONCAT(
      tblpeople.FirstName , 
      ' ' , 

     IF(
      tblpeople.Middle <> '' , 
      tblpeople.Middle , 
      '' 
     ) , 
     ' ' , 
     tblpeople.LastName , 

    IF(
     tblpeople.NameSuffix <> '' , 
     Concat(', ' , tblpeople.NameSuffix) , 
     '' 
    ) 
     ),' ',' ') AS `Name` 
+0

これはそのことを決して考えなかった。 – Rich

関連する問題