[前][次][番号順一覧][スレッド一覧]

mysql:15394

From: とみたまさひろ <とみたまさひろ <tommy@xxxxxxxxxx>>
Date: Sun, 12 Sep 2010 21:44:50 +0900
Subject: [mysql 15394] Re: 文字列を返す関数で質問です

とみたです。

On Fri, 10 Sep 2010 14:05:55 +0900
こんにちは伊藤です <ito.takahiro.cp@xxxxxxxxxx> 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@xxxxxxxxxx>
日本MySQLユーザ会 http://www.mysql.gr.jp

[前][次][番号順一覧][スレッド一覧]

     15393 2010-09-10 14:05 [こんにちは伊藤です <] 文字列を返す関数で質問です              
->   15394 2010-09-12 21:44 ┗[とみたまさひろ <tomm]                                       
     15395 2010-09-13 10:59  ┗[こんにちは伊藤です <]                                     
     15396 2010-09-14 11:59   ┗[とみたまさひろ <tomm]                                   
     15397 2010-09-14 13:28    ┗[こんにちは伊藤です <]