2011-12-08 12 views
0

私は枝のリストを持っていますが、枝がないときは結果がダッシュとして返されます。私はこのようなケースを試みました:一致しない場合、SQLレポートはダッシュを返します。

CASE Table.column 
WHEN '-' THEN 'Global' 
ELSE Table.column 
END 

これは何もしません。私は試みた:

CASE Table.column 
WHEN NULL THEN 'Global 
ELSE Table.column 
END 

これも何もしなかった。何かご意見は?ブランチデータの元のテーブルにはダッシュを含む行がありません。

ありがとうございます。

答えて

1
CASE Table.column 
WHEN NULL THEN 'Global' 
ELSE Table.column 
END 

これは

CASE 
WHEN Table.column = NULL THEN 'Global' 
ELSE Table.column 
END 

と同じ意味ではなく、何もNULLに等しい比較しないためTABLE.COLUMNはこれまで、NULLに等しいとしません。使用して、代わりにNULL IS:

CASE 
WHEN Table.column IS NULL THEN 'Global' 
ELSE Table.column 
END 

またはより短いが、データベースには、それをサポートしている場合:これは動作しませんでした

COALESCE(Table.column, 'Global') 
+0

ありがとう、それは働いたが、私はちょっと混乱している。私はIS NULLを試していて、 'IS'部分の周りにエラーが発生していました。 CASE Organisation.txtDescription WHENがNULLの場合 'グローバル' ELSE Organisation.txtDescription END – user1076439

+0

CASEには2つの構文があります:CASE(値)WHEN(値1)THEN ... WHEN(値2)THEN ... ELSE ... END、またはCASE WHEN(boolean1)THEN ... WHEN(boolean2)THEN ... ELSE ... END。最初の構文は常に=と同じように比較され、異なる比較が必要な場合(そしてここで行う場合)、2番目の構文が必要で、2番目の構文はCASEとWHENの間に何もありません。 – hvd

0
CASE WHEN Table.colmun = '-' THEN 'Global' ELSE Table.column END 
+0

、私は構文エラーを取得します。 – user1076439

+0

@ user1076439申し訳ありません、私は 'END'を忘れました。私はhvdのソリューションをお勧めします。より正確です。 –

関連する問題