[pgsql-jp: 36453] Re: CASE文について
ITAGAKI Takahiro
itagaki.takahiro @ lab.ntt.co.jp
2005年 11月 28日 (月) 16:19:09 JST
水沼寛喜 <mizunuma @ m-design.com> wrote:
> ●実行したSQL文
> SELECT cid, largeq, enq65, CASE WHEN enq65 BETWEEN '2' AND '8' THEN 1 ELSE 0
> END FROM
> kenqt WHERE cid = '235' AND largeq = '2' AND del_flag IS NULL;
>
> cid | largeq | enq65 | case
> -----+--------+-------+------
> 235 | 2 | 29 | 1
> 235 | 2 | 29 | 1
> 235 | 2 | 13 | 0
> 235 | 2 | 19 | 0
> 235 | 2 | 31 | 1
> 235 | 2 | 38 | 1
enq65 の型が、文字列(text, char, varchar) ではありませんか?
文字列だと、BETWEEN '2' AND '8' は、
「先頭の文字が '2' 〜 '8' の間の文字ならば」という意味になってしまいます。
enq65 の列の型を変更するか、
enq65::int BETWEEN 2 AND 8 とキャストしてみてはいかがでしょう?
------------------------------------------------------------
板垣貴裕 <itagaki.takahiro @ lab.ntt.co.jp>
pgsql-jp メーリングリストの案内