MySQL:在 WHERE x IN (...) 中使用的用户定义函数无效

MySQL: User Defined Function Used in WHERE x IN (...) Not working

我在 MySQL 中有一个存储过程,它采用一个参数,该参数可以包含 1 个或多个值。我希望能够按这些值进行过滤,所以我创建了一个可以接受字符串和定界符参数的函数

my_func('val1,val2,val3',',')

它returns一个字符串

'val1','val2','val3'

。然后我在 where 子句中调用这个函数,例如

WHERE x IN (my_func('val1,val2,val3',','))

但这不起作用。它不会给出任何错误,但它会保持 运行ning 而不会返回任何内容。我已经单独测试了该功能,它运行良好,并且 returns 不到一秒钟。我正在尝试 运行 的查询是一个非常基本的测试查询。用

等常规字符串替换函数
WHERE x IN ('val1','val2','val3')

工作得非常好,returns 只需几秒钟。我正在尝试做的事情有可能吗?谢谢!

IN 要求参数是一个文字列表,它不会重新解析字符串。使用 FIND_IN_SET:

WHERE FIND_IN_SET(x, 'val1,val2,val3'))