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

mysql:15395

From: こんにちは伊藤です <こんにちは伊藤です <ito.takahiro.cp@xxxxxxxxxx>>
Date: Mon, 13 Sep 2010 10:59:40 +0900
Subject: [mysql 15395] Re: 文字列を返す関数で質問です

とみたさん
返信ありがとうございます。

>     select * from テーブルA where col1 in ('111,222')
[お返事]
もし上記の通り評価されていれば、結果は0レコードになります。
結果は「select * from テーブルA where col1 in (111)」または
「select * from テーブルA where col1 in ('111')」」の結果でした。

とりあえず、今は一度INの中身に直接関数名を記述しないで、結果を一度変数に
持ちINの中身へ変数をセットしています。それならうまくいくようです。この変
数とはPHP上の変数です。
ということで、この話題は私的にはCLOSEでよいかと思ってます。





On Sun, 12 Sep 2010 21:44:50 +0900
とみたまさひろ <tommy@xxxxxxxxxx> 様から以下のようなメールをいただきました。。:

> とみたです。
> 
> 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




-------------------------------------------------
伊藤崇洋
ito.takahiro.cp@xxxxxxxxxx
-------------------------------------------------


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

     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    ┗[こんにちは伊藤です <]