2010年9月12日

[mysql 15394] Re: 文字列を返す関数で質問です

とみたです。

On Fri, 10 Sep 2010 14:05:55 +0900
こんにちは伊藤です <ito.takahiro.cp@xxxxx> wrote:

> 文字列型を返す関数で、「ん?」と思われる現象です。
> クエリで文字列を返す関数を使うと、リターンにカンマが入っている場合、カン
> マの前しか取得されないようです。

〜中略〜
> ↓下記は正常
> select getXX(1) ⇒ 111,222
>
> ↓これはNG
> select * from テーブルA where col1 in (getXX(1))
> ⇒col1=111しか取得できない。col1=222もほしかった!
>
> クエリ文中で使うとリターンにカンマがある場合、カンマの前しか返さないらし
> い。リターンをvarcharやcharにしても同じでした。

これは次のように評価されているということです。

select * from テーブルA where col1 in ('111,222')

つまり in の中に 111 と 222 という2つの値を指定しているんではなく
て、'111,222' という1つの値を指定してることになってます。

「111 in ('111,222')」は真だけど「222 in ('111,222')」は偽なので、111
しか取得できないんですね。

--
とみたまさひろ <tommy@xxxxx>
日本MySQLユーザ会 http://www.mysql.gr.jp


投稿者 xml-rpc : 2010年9月12日 21:44
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/98330
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。