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