將標題重寫為:將整數數組傳遞給MySQL儲存過程
P粉275883973
P粉275883973 2023-11-03 10:46:21
0
2
644

我想建立一個儲存過程,它接收整數陣列和一些其他輸入,例如:

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

在儲存過程中我想像這樣使用它:

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

問題是,透過這種方式,我只能得到與陣列中第一個整數相對應的行。

有什麼方法可以讓它工作(我也嘗試使用 FIND_IN_SET 但它的作用與 IN 完全相同)?

我為測試預存程序而進行的呼叫是 CALL test (12, 13, '1, 2, 3')

P粉275883973
P粉275883973

全部回覆(2)
P粉590428357

沒有陣列概念。所以你能做的可能就是這樣

您的array變數的值為'1, 2, 3'作為字串

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

  2. 將每個值插入暫存表

所以你的臨時表會有1,2,3

#

最後只需使用您的臨時表即可

P粉713866425

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板