Tulis semula tajuk sebagai: Melepasi tatasusunan integer ke prosedur tersimpan MySQL
P粉275883973
P粉275883973 2023-11-03 10:46:21
0
2
499

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 menggunakanFIND_IN_SET但它的作用与INbetul-betul sama)?

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

P粉275883973
P粉275883973

membalas semua (2)
P粉590428357

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 mempunyai1,2,3

Akhirnya gunakan sahaja meja sementara anda

    P粉713866425

    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.

      Muat turun terkini
      Lagi>
      kesan web
      Kod sumber laman web
      Bahan laman web
      Templat hujung hadapan
      Tentang kita Penafian Sitemap
      Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!