簡體   English   中英

MySQL使用IN准備的語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM