mysql - 将整数数组传递给 mysql 过程

标签 mysql sql arrays stored-procedures integer

我想创建一个存储过程来接收整数数组和一些其他输入,例如:

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() 有效,但数字字符串中不能有空格。

演示:

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

关于mysql - 将整数数组传递给 mysql 过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22919492/

相关文章:

mysql - 如何根据前一行在接下来的几行中插入值

sql - SQL Server 中的 IN 与 OR 运算符

php - 如何在php中比较数组和数据库

php - 我们需要从 mysql 检索所有行。并且表只有一列,例如名称。哪种方法更好?

mysql - 将 IN 参数存储在存储过程的变量中

php - 简单的MySQL代码不将数据插入数据库?

sql - 在某些条件下禁止插入表

JavaScript:在数组数量中搜索用户输入

javascript - 如何将您在函数中调用的内容更改为数组

arrays - 如何在 rails 中对哈希进行排序