我想创建一个存储过程,它接收整数数组和一些其他输入,例如:
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')
.
FIND_IN_SET() 可以工作,但数字字符串中不能有空格。
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 |
+-------------------------+
因此,您应该在将列表传递给过程之前从不带空格的列表中删除空格,或者在过程中使用 REPLACE() 删除空格。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)