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
但它的作用与IN
betul-betul sama)?
Panggilan yang saya buat untuk menguji prosedur tersimpan ialahCALL test (12, 13, '1, 2, 3')
.
Tiada konsep tatasusunan. Jadi ini mungkin yang anda boleh lakukan
array
变量的值为'1, 2, 3'
anda sebagai rentetanPisah rentetan menggunakan
,
sebagai pembatas,Masukkan setiap nilai ke dalam jadual sementara
Jadi meja sementara anda akan mempunyai
1,2,3
Akhirnya gunakan sahaja meja sementara anda
FIND_IN_SET() berfungsi, tetapi anda tidak boleh mempunyai ruang dalam rentetan nombor.
Demo:
Jadi anda harus membentuk senarai tanpa ruang sebelum menghantarnya ke prosedur, atau gunakan REPLACE() dalam prosedur untuk mengalih keluar ruang.