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'))
我在 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'))