在 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), ' ', ''));
我创建了一个 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), ' ', ''));