Schreiben Sie den Titel wie folgt um: Übergabe eines Arrays von Ganzzahlen an die gespeicherte MySQL-Prozedur
P粉275883973
P粉275883973 2023-11-03 10:46:21
0
2
569

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').

P粉275883973
P粉275883973

Antworte allen(2)
P粉590428357

没有数组概念。所以你能做的可能就是这样

您的array变量的值为'1, 2, 3'作为字符串

  1. 使用 , 作为分隔符拆分字符串,

  2. 将每个值插入临时表

所以你的临时表将有1,2,3

最后只需使用您的临时表即可

P粉713866425

FIND_IN_SET() 可以工作,但数字字符串中不能有空格。

演示:

mysql> select find_in_set(2, '1, 2, 3');
+---------------------------+
| find_in_set(2, '1, 2, 3') |
+---------------------------+
|                         0 |
+---------------------------+

mysql> select find_in_set(2, '1,2,3');
+-------------------------+
| find_in_set(2, '1,2,3') |
+-------------------------+
|                       2 |
+-------------------------+

因此,您应该在将列表传递给过程之前形成不带空格的列表,或者在过程中使用 REPLACE() 去除空格。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!