列の中間名に値が含まれているかどうかを確認する必要があります。 空の場合は、名前と連結しないでください。問合せの選択で列の値を確認する方法
Select
..
Agent,
FirstName + ' ' MiddleName + ' ' + LastName as Name,
...
from tbSystemUser
上記のクエリでは、MiddleNameが空の場合は名前にスペースが2回追加されます。
列の中間名に値が含まれているかどうかを確認する必要があります。 空の場合は、名前と連結しないでください。問合せの選択で列の値を確認する方法
Select
..
Agent,
FirstName + ' ' MiddleName + ' ' + LastName as Name,
...
from tbSystemUser
上記のクエリでは、MiddleNameが空の場合は名前にスペースが2回追加されます。
あなたは以下にCOALESCE
でCASE expression
を使用することができcase文
Select
..
Agent,
Case MiddleName
when ' ' then
FirstName + ' ' + LastName
else
FirstName + ' ' MiddleName + ' ' + LastName
end
as Name,
...
from tbSystemUser
OR
Select
..
Agent,
Case
when MiddleName = ' ' then
FirstName + ' ' + LastName
else
FirstName + ' ' MiddleName + ' ' + LastName
end
as Name,
...
from tbSystemUser
だけ追加する場合の式を使用しますt彼MiddleNameがnullでない場合MiddleName + ' '
一部:
Select
...
Agent,
FirstName +
case when MiddleName is not null then MiddleName + ' ' end +
LastName as Name,
...
from tbSystemUser
SELECT FirstName
+IIF(ISNULL(LTRIM(RTRIM(MiddleName)),'')<>'',' '+MiddleName,'')
+' '+LastName as Name
またはあなたのSQL Serverのバージョンが2012より古い場合:
SELECT FirstName
+CASE WHEN ISNULL(LTRIM(RTRIM(MiddleName))) <> ''
THEN ' '+MiddleName
ELSE '' END
+' '+LastName as Name
あなたが意味空のものを指定しませんでした。ここの他のソリューションのほとんどとは異なり、これはNULLを含む空の文字列の長さを扱いますが、特殊文字は扱いません。私は誰もいなくてミドルネームとして改行を追加したと仮定します。 :)
私はあなたのようなサブクエリを使用することができると信じて:
Select Agent, Name from
(
Select t1.Agent as Agent, t1.FirstName + ' ' t1.MiddleName + ' ' + t1.LastName as Name,
from tbSystemUser as t1 WHERE t1.MiddleName IS NOT NULL
)
NATURAL JOIN
(
Select t2.Agent as Agent, t2.FirstName + ' ' + t2.LastName as Name,
from tbSystemUser as t2 WHERE t2.MiddleName IS NULL
)
これは、2つの選択によって作成された名前に基づいてあなたの答えを構築します。
'Middlename'がNULLになるのでしょうか。 –