Heim  >  Fragen und Antworten  >  Hauptteil

Schreiben Sie den Titel wie folgt um: Übergabe eines Arrays von Ganzzahlen an die gespeicherte MySQL-Prozedur

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粉275883973P粉275883973321 Tage vor576

Antworte allen(2)Ich werde antworten

  • P粉590428357

    P粉5904283572023-11-04 09:16:19

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

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

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

    2. 将每个值插入临时表

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

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

    Antwort
    0
  • P粉713866425

    P粉7138664252023-11-04 00:46:05

    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() 去除空格。

    Antwort
    0
  • StornierenAntwort