[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 メーリングリストの案内