[pgsql-jp: 27986] Re: 文字列を数値でselect する方法

Naofumi Kondoh nkon @ shonan.ne.jp
2002年 11月 17日 (日) 02:22:12 JST


ソフト工房の近藤です。本題でないところに反応。

Mashiki wrote:
>  Mashikiです。
> 
> 
>>create table testtable
>>{
>>    id     int,
>>    value  char(10)
>>};
> 
> このSQLはinfomix特有なのでしょうか?括弧が不思議ですね。
....略....

typo でしょう。丸括弧が正解。
Informix は、結構 ANSI SQL に忠実です。

CREATE TABLE hoge ( id serial );

# Informix では、{  } を --(ハイフォン2つ)と 同様に
# コメントとして扱うことがありますが。。。。

今手元に Informix がないので、追試はできませんが、
記憶では、文字列の中が数字だけの場合は、自動的に
数値型にキャストするようなことが書いてあったような。
記憶違いならごめんなさい。

でも、明示的にキャストしないと気持ち悪いですね。

暗黙の変換って、大嫌い (^_^)。

-------
本題に戻ります。

そもそも、固定長 CHAR 型の列なのに、前ゼロとか
前空白とか、ばらばらに妙な形のデーターが入って
いるんでしょうか?。しかも、CHAR 型を 数値として
比較したいなんて、DB設計とアプリケーションの
両方ともおかしいですね。

本来の固定長 CHAR 型の用途とおりに、きちんと、
zero suppress 又は、前ゼロ固定桁数, 左詰め
で格納されていれば、 WHERE value = '1234' とか、
WHERE value = '0000001234' で、抽出できます。

# RDB がなかった頃の大昔の COBOL では、数値型と
# 文字列型を RDEFINES ( C の union みたいなもの)
# して使ったけど、RDB でこんなことをするのは変。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 (株)ソフト工房   近藤直文        Email:  nkon @ shonan.ne.jp
http://www.SOFTKOUBOU.co.jp/      http://www.shonan.ne.jp/~nkon/
2002-11-28(木)19:00-21:30 第8回PostgreSQL業務アプリ分科会 勉強会
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/





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