1

WHERE 句に変数を指定して SELECT ステートメント (Windows 7 のデータベース MySQL バージョン 5.5.27) を実行しています。6 つのレコードを返すはずですが、そうではありません。以下は簡単なテストコードです。

-- Test-I
SET @group_saids := (SELECT REPLACE(
                                    '''ClicPlan - España|ClicPlan - Francia|ClicPlan - UK|ClicPlan - Belgique|ClicPlan - Argentina|Clicplan - Turkey'''
                                    ,'|',"','") as aids_list from dual);

select @group_saids from dual;


select sd.aid
FROM said_aid sd
where sd.said in (@group_saids);

-- レコードが選択されていません。

-- テスト-II

select sd.aid
FROM said_aid sd
where sd.said in ('ClicPlan - España','ClicPlan - Francia','ClicPlan - UK',
                  'ClicPlan - Belgique','ClicPlan - Argentina',
                  'Clicplan - Turkey');

aid
----
3045
3253
3254
3260
3268
3270

上記の Test-I のコードでは、select from table said_aid はレコードを返しませんが、6 つのレコードが出力されるはずです。IN 値がハードコードされた Test-II の同じクエリは、6 つのレコード出力を返します。実行中にエラーはありません。

4

1 に答える 1