MySQL:在(…)中的WHERE x中使用的用户定义函数不起作用
我在MySQL中有一个存储过程,它接受一个可以由1个或多个值组成的参数。我希望能够根据这些值进行筛选,因此我创建了一个可以接受字符串和分隔符参数的函数MySQL:在(…)中的WHERE x中使用的用户定义函数不起作用,mysql,user-defined-functions,where-in,Mysql,User Defined Functions,Where In,我在MySQL中有一个存储过程,它接受一个可以由1个或多个值组成的参数。我希望能够根据这些值进行筛选,因此我创建了一个可以接受字符串和分隔符参数的函数 my_func('val1,val2,val3',',') 它返回一个字符串 'val1','val2','val3' 。然后我在where子句中调用这个函数,比如 WHERE x IN (my_func('val1,val2,val3',',')) 但这是行不通的。它不会给出任何错误,但它会继续运行,而不会返回任何内容。我已经单独测试了该
my_func('val1,val2,val3',',')
它返回一个字符串
'val1','val2','val3'
。然后我在where子句中调用这个函数,比如
WHERE x IN (my_func('val1,val2,val3',','))
但这是行不通的。它不会给出任何错误,但它会继续运行,而不会返回任何内容。我已经单独测试了该函数,它运行良好,在不到一秒钟的时间内返回。我试图在其中运行的查询是一个非常基本的测试查询。将函数替换为常规字符串,如
WHERE x IN ('val1','val2','val3')
工作完全正常,几秒钟后返回。我想做的是可能的吗?谢谢 中的
要求参数为文本列表,它不会重新解析字符串。使用在集合中查找
:
WHERE FIND_IN_SET(x, 'val1,val2,val3'))
中的要求参数为文字列表,它不会重新解析字符串。使用在集合中查找
:
WHERE FIND_IN_SET(x, 'val1,val2,val3'))
我不知道存储过程应该做什么。@FutbolFan它使用逗号分隔的列表并返回一个逗号分隔的列表,每个元素周围都有引号。我不知道存储过程应该做什么。@FutbolFan它使用逗号分隔的列表并返回一个逗号分隔的列表,每个元素周围都有引号。哇这个答案被低估了。哇,这个答案被低估了。