Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:在(…)中的WHERE x中使用的用户定义函数不起作用_Mysql_User Defined Functions_Where In - Fatal编程技术网

MySQL:在(…)中的WHERE x中使用的用户定义函数不起作用

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',',')) 但这是行不通的。它不会给出任何错误,但它会继续运行,而不会返回任何内容。我已经单独测试了该

我在MySQL中有一个存储过程,它接受一个可以由1个或多个值组成的参数。我希望能够根据这些值进行筛选,因此我创建了一个可以接受字符串和分隔符参数的函数

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它使用逗号分隔的列表并返回一个逗号分隔的列表,每个元素周围都有引号。哇这个答案被低估了。哇,这个答案被低估了。