SELECT product_id, product_price FROM product
WHERE product_type IN ('AA','BB','CC');
、私は次のようにSELECT
文を持っているSPを持っていると言うことができます。しかし、データがIN
句は、値の文字列を含む単一の変数を介してでなければならないことになります。何かがリンク先
しかし、そのように動作しません。どのようにこれを行うにはどのようなアイデア?
SELECT product_id, product_price FROM product
WHERE product_type IN ('AA','BB','CC');
、私は次のようにSELECT
文を持っているSPを持っていると言うことができます。しかし、データがIN
句は、値の文字列を含む単一の変数を介してでなければならないことになります。何かがリンク先
しかし、そのように動作しません。どのようにこれを行うにはどのようなアイデア?
このようなパスパラメータ値 - 'AA,BB,CC'
を。その後、FIND_IN_SET機能を使用するのに十分である - 変数を使用して文字列を渡す
SELECT product_id, product_price
FROM product
WHERE FIND_IN_SET(product_type, param);
カンマ区切りの値をtableに変換するユーザー定義関数を作成し、この2つを結合して目的の結果を得ることができます。
プリペアドステートメントを使用してみてください: http://dev.mysql.com/doc/refman/5.5/en/sql-syntax-prepared-statements.html
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `spTestListValues`(_list varchar(200))
BEGIN
SET @LIST=_list; -- assume this a paramter from the stored procedure
SELECT NULL AS Id, '' AS Description --insert null value to be used for list box population
UNION
(SELECT id, Description
FROM test_table
WHERE FIND_IN_SET(id,@LIST) ORDER BY Description ASC) ;
END
call `spTestListValues`('4,5,3'); --no paramter currently for test
ID Description
NUll
1 TEST1
4 TEST2
5 TEST3
'input_variables'はどこから来ますか? 'php? ' –
実際には直接のMYSQLはcronジョブから実行するので、SPの入力パラメータの1つです。ユーザーが入力するデータは、必要なデータによって異なります。 – Thanu
だから、カンマ区切りの値が1つの変数にあることを意味しますか? –