在 IN() 运算符中使用 Mysql 存储函数的 return 值

Using the return value of Mysql stored function in IN() operator

我创建了一个 Mysql 存储函数来通过父 ID 获取所有子 ID,它工作正常,该函数的 return 类型是 varchar 并且它 returns 子 ID 为由逗号分隔的字符串,如 (2 ,3 ,4 ,5 ,7 ,8 ,9).

当我将它们放入 IN() 运算符时,它会带来与第一项 (2) 相关的记录。

这里是查询:

SELECT * FROM department where id in(getChildDepartment(1)) 

注意:我输入参数的1是上级部门的id

提前致谢。

IN 不接受逗号分隔值字符串,而是值列表。返回一行的原因是发生了从字符串到整数的隐式类型转换,因为 id 列可能具有 INTEGER 数据类型。

要么更改您的返回值,要么使用:

SELECT * FROM department WHERE FIND_IN_SET(id, REPLACE(getChildDepartment(1), ' ', ''));