2016-05-02 13 views
2

列の中間名に値が含まれているかどうかを確認する必要があります。 空の場合は、名前と連結しないでください。問合せの選択で列の値を確認する方法

Select 
    .. 
    Agent, 
    FirstName + ' ' MiddleName + ' ' + LastName as Name, 
    ... 
    from tbSystemUser 

上記のクエリでは、MiddleNameが空の場合は名前にスペースが2回追加されます。

+0

'Middlename'がNULLになるのでしょうか。 –

答えて

3

を使用することができます。

select 
.. 
Agent, 
case when coalesce(MiddleName, '') = '' then FirstName + ' ' + LastName 
     else FirstName + ' ' + MiddleName + ' ' + LastName 
end as Name, 
... 
from tbSystemUser 
+1

合体によって空と空を扱うために+1を加える。 – Arulkumar

+0

私はむしろ空の名前を許可しないという制約があります。 (強制的にNULLの。) – jarlh

1

あなたは以下にCOALESCECASE 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 
+0

構文エラーです。ところで、case文を必要とせず、case文を使います。 – jarlh

+0

'FirstName'の近くに誤った構文がスローされます。 – Nida

+0

@Nidaは私の編集した答えを確認します – Sachu

1
Select 
.. 
Agent, 
FirstName + CASE WHEN MiddleName is not null THEN ' ' + MiddleName else '' END + ' ' + LastName as Name, 
... 
from tbSystemUser 
+0

前と同じ問題です。 '+ '''をcase式に移動します。 (そして、構文エラーを調整してください。) – jarlh

+0

今すぐチェックしてください –

+0

さらに良いですが、構文エラーです。 (ヒント:ケースの直前) – jarlh

1

だけ追加する場合の式を使用しますt彼MiddleNameがnullでない場合MiddleName + ' '一部:

Select 
    ... 
    Agent, 
    FirstName + 
    case when MiddleName is not null then MiddleName + ' ' end + 
    LastName as Name, 
    ... 
    from tbSystemUser 
0
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を含む空の文字列の長さを扱いますが、特殊文字は扱いません。私は誰もいなくてミドルネームとして改行を追加したと仮定します。 :)

1

私はあなたのようなサブクエリを使用することができると信じて:

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つの選択によって作成された名前に基づいてあなたの答えを構築します。

関連する問題