【回転】MySQLストレージパスパラメータ実現where id in(1,2,3,...)例

902 ワード

原文住所:https://www.cnblogs.com/twyth/p/7263369.html
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;