0

2つのフィールドを持つ1つのテーブルがあります-ID1とID2ID1
は空白にすることができ、ID2は常に入力されます。

1つのフィールドを含むビューを作成したいと思います。ID1に値がない限り、このフィールドはID2からのデータになります。値がある場合は、ID1である必要があります。

ID1がnullでないため、Coalesceは機能しません。

すべてのアドバイスは大歓迎です!

4

4 に答える 4

2

このコンテキストで「空白」が正確に何を意味するかによって異なりますが、空白が空の文字列または空白のみを意味する場合:

次の手順を実行して、その列に空白として扱いたい空白が含まれている可能性がある場合は、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)'

于 2012-06-26T11:44:34.633 に答える
1

「空白」が意味するものは何でも、そうでない場合は、次の条件NULLで表すことができます。CASE

CASE WHEN ID1 = 'blank' THEN ID2 ELSE ID1 END

ID1 = 'blank'あなたの状態はどこにありますか。

于 2012-06-26T11:46:09.933 に答える
1
select case when ID1 = '' then ID2 else ID1 end from MyTable;
于 2012-06-26T11:47:31.147 に答える
0

CASE次のステートメントを試すことができます。

SELECT CASE ID1 = '' THEN ID2 ELSE ID1 END CASE FROM ...
于 2012-06-26T11:46:02.233 に答える