Rumah  >  Soal Jawab  >  teks badan

Tulis semula tajuk sebagai: Melepasi tatasusunan integer ke prosedur tersimpan MySQL

Saya ingin mencipta prosedur tersimpan yang menerima pelbagai integer dan beberapa input lain seperti:

CREATE PROCEDURE test (field1 varchar(4), field2 varchar(4), array varchar (255))

Dalam stored procedure saya nak guna macam ni:

...
WHERE some_field IN (array)
...

Masalahnya ialah dengan cara ini saya hanya mendapat baris yang sepadan dengan integer pertama dalam tatasusunan.

Adakah ada cara untuk menjadikannya berfungsi (saya juga cuba menggunakan FIND_IN_SET 但它的作用与 IN betul-betul sama)?

Panggilan yang saya buat untuk menguji prosedur tersimpan ialah CALL test (12, 13, '1, 2, 3').

P粉275883973P粉275883973321 hari yang lalu579

membalas semua(2)saya akan balas

  • P粉590428357

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

    Tiada konsep tatasusunan. Jadi ini mungkin yang anda boleh lakukan

    array变量的值为'1, 2, 3' anda sebagai rentetan

    1. Pisah rentetan menggunakan , sebagai pembatas,

    2. Masukkan setiap nilai ke dalam jadual sementara

    Jadi meja sementara anda akan mempunyai 1,2,3

    Akhirnya gunakan sahaja meja sementara anda

    balas
    0
  • P粉713866425

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

    FIND_IN_SET() berfungsi, tetapi anda tidak boleh mempunyai ruang dalam rentetan nombor.

    Demo:

    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 |
    +-------------------------+

    Jadi anda harus membentuk senarai tanpa ruang sebelum menghantarnya ke prosedur, atau gunakan REPLACE() dalam prosedur untuk mengalih keluar ruang.

    balas
    0
  • Batalbalas