[pgsql-jp: 27983] 【PostgreSQL】文字列を数値でselect

Kawasaki -S5- Yusuke u-suke @ kawa.net
2002年 11月 16日 (土) 12:58:49 JST


川崎。最近もかわいい調査DBでやったんだけど、DBでは
型チェックが入るので文字列と数値を簡単には比較(=)できない。
数値を文字列に変換するのは、自動にできるし、フォーマット指定も可能。
逆に文字列を数値に変換するのは、少し面倒。
DB中の文字列を数値に変換するには↓の方法もある。

> From: Mashiki <mashiki @ yanah.com>
> To: pgsql-jp @ ml.postgresql.jp
> Date: Sat, 16 Nov 2002 00:01:40 +0900
> Subject: [pgsql-jp: 27978] Re: 文字列を数値でselect する方法
> 
	(前略)
> create table testtable (
>     id     int,
>     value  char(10)
> );
> insert into testtable values(1,    '1234');
> insert into testtable values(2, '0001234');
> insert into testtable values(3, '   1234');
> 
> 
> として、postgresql7.2.1で試しましたが、
> 
>  select id from testtable where value=1234;
> 
> だと1件もヒットしません。
> 
> select id from testtable where int8(trim(value))=1234;
> 
>> 
> select id from testtable
>  where to_number(trim(value),'999999999')=1234;
> 
> ならすべて、検索できます。
> 
> select id from testtable
>  where to_number(ltrim(rtrim(value)),'999999999')=1234;
> 
> なら、Oracleでも共通でいけるのではないでしょうか
> 
> # でも、これだとインデックスが効かないので、はじめから数値型で
> # 定義しておきたいところ
> 




pgsql-jp メーリングリストの案内