2016-09-14 18 views
1

表があります。このようなMySQLの検索

CREATE TABLE n_dummy (
    id int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `values` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM; 

INSERT INTO `n_dummy` (id, `values`) VALUES 
(2, '2,10'), 
(10, '2,10') 
(3, '7,3'); 

ルック:

id | values 
----------- 
2 | 2,10 
10 | 2,10 
3 | 7,3 

Fiddle included.

最初の列がvalues列から文字列で検索される整数であります。

注:例があまりにも単純すぎて、愚かに見えます。テーブル構造のリファクタリングは方法ではありません。標準の関数とプロシージャを持つSQLクエリのみ。

私は文字列内の整数値を、,セパレータで連結された整数から検索したいと考えています。

私は、MySQLがINオペレータでこれを行うことを期待: SELECT ID n_dummy ID(values)INから。

結果は2,10および3となります。しかし、MySQLは2しか返しません。2番目の値と他の値は、IN演算子でstringで検索することはできません。

SQLクエリとプリビルドルーチンを使用して連結文字列で整数を検索するにはどうすればよいですか?

+1

を試してみてください。合意した – Ejaz

+0

質問は膨大な量のサブクエリからなる非常に大きなクエリ(%)のバージョンがあまりにも単純すぎるため、実際のテーブルはinsert文ではなく動的に作成されます。 – userlond

+0

私の質問の主な目的は、動的に作成された文字列をセパレータ文字列(これは 'CONCAT_WS'関数と多くの' CASE'演算子を使って形成され、プレーンなsql-queryではなく)で連結して見つける方法です。 – userlond

答えて

2

は、リレーショナルデータベースでは、 `stupid`に見えることをやって、この兄弟

SELECT * FROM `n_dummy` WHERE concat(',',`values`,',') LIKE concat('%',',',`id`,',','%') 
+0

素晴らしい、それは仕事、ありがとう! – userlond