2017-01-22 9 views
0

空の文字列( '' = '')を均等に比較したいdb2空の文字列等価比較

問合せが機能しません。 私は '' = ''はうまくいかないと思います。

SELECT RESOURCE_ID 
FROM DEV_RESOURCE 
WHERE PHYSICAL_NAME = 'g'     
    AND 
    CASE WHEN '' = '' THEN '1' ELSE RESOURCE_DIV END = CASE WHEN '' = '' THEN '1' ELSE '' END 
-- AND DECODE('', '','1', RESOURCE_DIV) = DECODE('','','1','') 
WITH UR; 

コメントのように、デコード機能を使用してクエリを変更することは素晴らしいようですが、私はしたくありません。

+0

''がnullです - これは一つの回答です –

+0

私は ''' = '''の理由を理解しています。それはいつも真実ではない...? –

+0

偶然、Oracleの互換性を有効にしていますか? – mustaccio

答えて

0

理由は "Oracle compatibility"です。

データベースを作成する前にOracleの互換性を可能にするレジストリ変数を変更しました。 (db2set DB2_COMPATIBILITIY_VECTOR = ORA)

DB2 Oracleと異なり、NULLは空の文字列( '')と同じです。 Oracle互換性により、 '' = ''がエラーになります。