【Oracle】NVL関数ではまる。NZLから返される値と比較する場合、末尾の空白を考慮する必要がある
NVL関数は、レファレンスによると、
NVL( 文字列 , 変換文字列 ), 文字列 がNULLの場合は、変換文字列を返します。
とある。いたって簡単かつ便利な関数である。
ところがである。これにchar(2)などの固定長の項目を適用すると、末尾の空白を含めて比較しなければならなくなる。
カラムAがchar(2)だとすると、ここに、'Q 'という値が入っているとする。 カラムA = ’Q' はtrueになる。 しかし、 NVL(カラムA, '') = 'Q' は、falseになってしまう。 NVL(カラムA, '') = 'Q ' と、Qの末尾に空白を付けるとtrueになる。
注意が必要だ。