MySQL:WHERE x 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',','))

但这行不通。它不会给出任何错误,但它会继续运行而不会返回任何内容。我已经单独测试了这个功能,它工作正常,不到一秒钟就返回了。我试图在其中运行它的查询是一个非常基本的测试查询。将函数替换为常规字符串,例如

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

运行良好,仅需几秒钟即可返回。我正在尝试做的事情有可能吗?谢谢!

最佳答案

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

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

关于MySQL:WHERE x IN (...) 中使用的用户定义函数不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31681195/

相关文章:

mysql - 使用左连接或右连接连接四个表

hadoop - Hive 解析和编辑数组以构造字段

MySQL:WHERE IN() 仅限于一行对等参数

Mysql:查询 "WHERE...IN"、 "ORDER BY..."和 "LIMIT"中可能出现错误

php - 准备好的语句绑定(bind)参数错误

mysql - 为什么MySQL不使用索引?

php - php从数据库中检索多个数据到数组中

javascript - JS UDF,对来自 bigquery 标准 sql 的输入数据进行分区

scala - 如何传递 Scala UserDefinedFunction 其中输出是复杂类型(使用 StructType 和 StructField)以从 Pyspark 使用

java - 在HQL中使用Hibernate for Java获取异常行为绑定(bind)parameterList时