在in()运算符中使用mysql存储函数的返回值

mnowg1ta  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(437)

这个问题在这里已经有了答案

mysql select in子句字符串逗号分隔(1个答案)
两年前关门了。
我创建了一个mysql存储函数,通过父id获取所有子id,它工作正常,该函数的返回类型为 varchar 它以字符串的形式返回子id,用逗号分隔,如( 2 ,3 ,4 ,5 ,7 ,8 ,9 ).
当我把它们放进去的时候 IN() 运算符,它会带来与第一项相关的记录( 2 ).
以下是查询:

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

注:以下为 1 我输入的参数是父部门的id。
提前谢谢。

syqv5f0l

syqv5f0l1#

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

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

相关问题