フィールドにアドレス1を表示し、アドレス2を「アドレス1、アドレス2」として表示するSQLクエリがあります。私のクエリは
(S.Address1 + ' , ' + S.Address2)as Address1
しかし、Address2 の値が空白の場合、「address1」が表示され、address1 のみを表示する必要があります。カンマを削除するにはどうすればよいですか
フィールドにアドレス1を表示し、アドレス2を「アドレス1、アドレス2」として表示するSQLクエリがあります。私のクエリは
(S.Address1 + ' , ' + S.Address2)as Address1
しかし、Address2 の値が空白の場合、「address1」が表示され、address1 のみを表示する必要があります。カンマを削除するにはどうすればよいですか
使用するCOALESCE
(COALESCE(S.Address1,'') + ' , ' + COALESCE(S.Address2, '')) as Address1
ただし、上記のステートメントの問題は、がnull,
の場合に末尾があり、修正することですaddress2
(COALESCE(S.Address1,'') + COALESCE(' , ' + S.Address2, '')) as Address1
更新 1
CASE WHEN S.Address2 = ''
THEN S.Address1
ELSE S.Address1 + ' , ' + S.Address2
END AS Addrss
JWは近いと思いますが、実際に必要な式は次のとおりです。
S.Address1 + COALESCE(' , ' + NULLIF(S.Address2,''),'') as Address1
(以下は関係ありません。OP は列の値が空白であると述べているため、 ではありませんNULL
)
CONCAT_NULL_YIELDS_NULL
しかし、別の問題もあります。明らかに に設定し
ているため、上記は (まだ) 機能しませんOFF
。次の理由から、これをオンにする必要があります (通常は に設定ANSI_NULLS
しますON
) 。
SQL Server の将来のバージョンでは、このオプション
CONCAT_NULL_YIELDS_NULL
は常にON
オフになり、オプションを明示的にオフに設定するアプリケーションはすべてエラーを生成します。新しい開発作業でこの機能を使用することは避け、現在この機能を使用しているアプリケーションを変更することを計画してください。
address2 が null または空の文字列、または単に空白のいずれかである場合、次のようなものが必要です。
select address1 +
case when length(trim(ifnull(address2, ''))) > 0 then ', ' + address2
else '' end