2つのフィールドを持つ1つのテーブルがあります-ID1とID2ID1
は空白にすることができ、ID2は常に入力されます。
1つのフィールドを含むビューを作成したいと思います。ID1に値がない限り、このフィールドはID2からのデータになります。値がある場合は、ID1である必要があります。
ID1がnullでないため、Coalesceは機能しません。
すべてのアドバイスは大歓迎です!
2つのフィールドを持つ1つのテーブルがあります-ID1とID2ID1
は空白にすることができ、ID2は常に入力されます。
1つのフィールドを含むビューを作成したいと思います。ID1に値がない限り、このフィールドはID2からのデータになります。値がある場合は、ID1である必要があります。
ID1がnullでないため、Coalesceは機能しません。
すべてのアドバイスは大歓迎です!
このコンテキストで「空白」が正確に何を意味するかによって異なりますが、空白が空の文字列または空白のみを意味する場合:
次の手順を実行して、その列に空白として扱いたい空白が含まれている可能性がある場合は、ID1からスペースを削除します。
LTRIM(ID1)
NULL
次に、次のようにして、空の文字列と等しい場合にそれを作成できます。
NULLIF(TRIM(ID1), '')
次に、次COALESCE()
のようなID2列を使用してそれを行うことができます。
COALESCE(NULLIF(TRIM(ID1), ''), ID2)
NULLIF(ID1,'')
ID1が常に「何か」または「」(空の文字列)である場合は、ID1=空の文字列の場合にNULLを返す必要があります。
2回トリミングするのでダメなオリジナルレスポンス!
'[ID] = COALESCE(NULLIF(LTRIM(RTRIM(ID1))、'')、ID2)'
「空白」が意味するものは何でも、そうでない場合は、次の条件NULL
で表すことができます。CASE
CASE WHEN ID1 = 'blank' THEN ID2 ELSE ID1 END
ID1 = 'blank'
あなたの状態はどこにありますか。
select case when ID1 = '' then ID2 else ID1 end from MyTable;
CASE
次のステートメントを試すことができます。
SELECT CASE ID1 = '' THEN ID2 ELSE ID1 END CASE FROM ...