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