したがって、FIELD2は、Myconditionの値に応じて1つの結果として連結されたフィールドの2つのグループを返すことができます。TSQLの長さの置き換え
私の問題があるときMycondition = 1
MyCondition = 1は、その後、私はINT_FIELD_ONE + '' + INT_FIELD_TWOを連結する必要がある場合。
連結は問題ではありません。
問題は、INT_FIELD_ONE(null)+ 'A' + INT_FIELD_TWO(null)の場合、何も返す必要がありません。
[置換]コマンドは、両方のフィールドが1つでもNULLの場合に機能します。しかし、1だけがNULLで、もう1つが "A"でなければ削除されません。 1つのフィールドがnullでない場合、Aは残る必要があります。例について
:
NULL + '' + NULL =なし
NULL + '' + XXXX = AXXXX
XXXX + '' + NULL = xxxxA
したがって、結果の長さ制約を1に置き換えてTSQLを作成する必要があります。
どのようなアイデアですか?
SELECT XXX,
CASE --Case Statement to Return Field2
WHEN MyCondition = 1 THEN
--Constraint on the Replace Starts Here
REPLACE(
Isnull(CAST(INT_FIELD_ONE AS VARCHAR), '') + 'A' +
Isnull(CAST(INT_FIELD_TWO AS
VARCHAR), '')
,'A','')
ELSE
REPLACE(
Coalesce(REPLACE(INT_FIELD_THREE, '', '-'), Isnull(INT_FIELD_THREE, '-'), INT_FIELD_THREE) +
'/' + Coalesce(REPLACE(INT_FIELD_FOUR, '', '-'),
Isnull(INT_FIELD_FOUR, '-'), INT_FIELD_FOUR) + ' ', '-/- ',
'')
END
AS FIELD2
FROM TABLEX