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