SQLメモ。
SQL弄ってたら微妙に困ったので備忘録。マニュアルには多分書いてあると思いますが。SELECTした際にNULL値だったものを次のように加工した時に。
SQL> SELECT TO_CHAR(NVL(NULL, 0), '0000') FROM DUAL; TO_CH
-
-
-
- -
-
-
一見すると別に問題なさそうなんですが、
SQL> SELECT LENGTH(TO_CHAR(NVL(NULL, 0), '0000')) FROM DUAL; LENGTH(TO_CHAR(NVL(NULL,0),'0000'))
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
先頭に1バイトのスペースが入ってしまいます。固定長のデータへ取り込む際に困ったりするので、以下のように。
SQL> SELECT TO_CHAR(NVL(NULL, 0), 'FM0000') FROM DUAL; TO_CH
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
それだけ。