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

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粉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 mempunyai 1,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!