Ich möchte eine gespeicherte Prozedur erstellen, die ein Array von Ganzzahlen und einige andere Eingaben empfängt, wie zum Beispiel:
CREATE PROCEDURE test (field1 varchar(4), field2 varchar(4), array varchar (255))
In der gespeicherten Prozedur möchte ich es so verwenden:
... WHERE some_field IN (array) ...
Das Problem ist, dass ich auf diese Weise nur die Zeilen erhalte, die der ersten Ganzzahl im Array entsprechen.
Gibt es eine Möglichkeit, es zum Laufen zu bringen (ich habe auch versucht, FIND_IN_SET
但它的作用与 IN
genau so zu verwenden)?
Der Anruf, den ich getätigt habe, um die gespeicherte Prozedur zu testen, war CALL test (12, 13, '1, 2, 3')
.
没有数组概念。所以你能做的可能就是这样
您的
array
变量的值为'1, 2, 3'
作为字符串使用
,
作为分隔符拆分字符串,将每个值插入临时表
所以你的临时表将有
1,2,3
最后只需使用您的临时表即可
FIND_IN_SET() 可以工作,但数字字符串中不能有空格。
演示:
因此,您应该在将列表传递给过程之前形成不带空格的列表,或者在过程中使用 REPLACE() 去除空格。