[pgsql-jp: 30870] Re: to_numberでFormat エラーになります
T.Suzuki
t_suzuki @ kenwood-eng.co.jp
2003年 8月 30日 (土) 22:30:51 JST
鈴木@KEGと申します。
> > 予測ですが、運用環境のbirthdayに '' が入っているのでは?
> > #データを移行する際や、アプリケーションの問題でNULLじゃなく、
> > # '' を入力してハマル事が良くあります。
> >
> データベースで確認したところ、''の値は入ってないようです。
そうでしたか、失礼しました。予想が完全に外れました...
> ---null
> select count(cust_cd) from customer_add_mst where birthday is null;
> count
> -------
> 330
>
> ---''
> select count(cust_cd) from customer_add_mst where birthday='';
> count
> -------
> 0
まさしく、上記の問い合わせの結果が気になったのですが…
だとすると、
ERROR: Bad numeric input format ' '
このエラーが出た原因が良くわからなくなりました。
> > (date_part('month', to_date(birthday, 'YYYYMMDD')) = '9')
この対策は、birthdayが null の場合でもエラーが出ないうえ、
本来の日付処理を目的とするならばと思ったのです。
残る気になる所を潰すために、
select * from customer_add_mst where birthday='';
(cust_cd が NULLでかつ、birthdayが '' の場合もヒットするように
ただし、cust_cdが唯一の主キーなら確認する必要はなし)
select count(*) from customer_add_mst;
(is Null で問い合わせた 330 件と一致するか? )
以上の問い合わせをしてみて、
問題の切り分けを進めてみてはいかがでしょうか?
-----------------------------------------
鈴木 徹 (SUZUKI Toru)
KENWOOD ENGINEERING CORPORATION
E-mail:t_suzuki @ kenwood-eng.co.jp
-----------------------------------------
pgsql-jp メーリングリストの案内