【回転】MySQLストレージパスパラメータ実現where id in(1,2,3,...)例
902 ワード
原文住所:https://www.cnblogs.com/twyth/p/7263369.html
MySQLストレージ・プロシージャ・パラメータの問題は、例えば、where id in(1,2,3,...)のフィルタ条件を実装したい場合です.以下に良い例がありますが、興味のある方は参考にしてください.
通常の書き方:
書き込みストレージプロセスinのリストに入力パラメータを代入する場合、主にfind_を用いる必要がある.in_set関数
もちろん、文字列を組み立てて実行する愚かな方法もあります.
MySQLストレージ・プロシージャ・パラメータの問題は、例えば、where id in(1,2,3,...)のフィルタ条件を実装したい場合です.以下に良い例がありますが、興味のある方は参考にしてください.
通常の書き方:
select * from table_name t where t.field1 in (1,2,3,4,...);
書き込みストレージプロセスinのリストに入力パラメータを代入する場合、主にfind_を用いる必要がある.in_set関数
select * from table_name t where find_in_set(t.field1,'1,2,3,4');
もちろん、文字列を組み立てて実行する愚かな方法もあります.
DROP PROCEDURE IF EXISTS photography.Proc_Test;
CREATE PROCEDURE photography.`Proc_Test`(param1 varchar(1000))
BEGIN
set @id = param1;
set @sel = 'select * from access_record t where t.ID in (';
set @sel_2 = ')';
set @sentence = concat(@sel,@id,@sel_2); -- SQL
prepare stmt from @sentence; -- 。 “stmt” ,
execute stmt; -- SQL
deallocate prepare stmt; --
END;