[英]MySQL prepared statement using IN
我想執行一個准備好的語句,例如
prepare stmt1 from 'select * from tags where name in (?)' set @a='tag1, tag2' ; execute stmt1 using @a ;
但可惜的是,它不能按預期工作(它似乎將in
的參數視為單個字符串)。
是否可以在准備好的語句中使用in
形成這樣的列表?
簡而言之,沒有。
您要嘗試運行的基本查詢是select * from foo where bar in ('tag1, tag2')
,這意味着它與字符串 'tag1, tag2'
匹配並且未將其視為列表。
不幸的是,使用in
,通常需要執行動態查詢。 其他選項是解析字符串的UDF或您要加入的臨時表。
可以。您可以動態構建SQL(例如使用CONCAT),然后執行它。
或者,您可以使用多個參數:
prepare stmt1 from 'select * from tags where name in (?, ?)'
set @a='tag1';
set @b='tag2';
execute stmt1 using @a, @b;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.