在查询条件下调用函数
Posted
技术标签:
【中文标题】在查询条件下调用函数【英文标题】:Calling function in where condition on query 【发布时间】:2012-09-10 13:38:06 【问题描述】:我在mysql
中创建了一个自定义函数。
我想在查询条件下调用它,例如
SELECT * FROM TABLE_NAME
WHERE (FUNCTION_NAME);
这可能吗?
注意:我的函数像查询一样返回值
【问题讨论】:
工具:http://www.sensefulsolutions.com/2010/10/format-text-as-table.html 在WHERE
子句中使用函数是一种不好的做法,因为它由于减少了索引使用而导致性能不佳。除非你打算SELECT ... WHERE col = function()
?
函数类似于“SELECT FUNCTION_NAME('columnname','a');”将返回“列名 LIKE ('%a%')”
【参考方案1】:
是的,您可以在查询中使用函数...
唯一的事情是你的条件,如果你要使用类似的东西
SELECT * FROM TABLE_NAME WHERE id = FUNCTION_NAME;
确保 FUNTION_NAME 返回一个数字而不是查询,或者如果您要使用 where in
,
SELECT * FROM TABLE_NAME WHERE id in (FUNCTION_NAME);
确保 FUNCTION_NAME 返回包含一列的查询。 function_name 的重要之处在于返回的内容,例如值或查询等
【讨论】:
函数类似于“SELECT FUNCTION_NAME('columnname','a');”将返回 "columnname LIKE ('%a%')" 所以它像查询一样返回......但对我不起作用。它在准备好的语句中工作正常,但在直接查询的情况下。 尝试使用call function_name(('columnname','a');
我尝试使用“SELECT * FROM TABLE_NAME WHERE call function_name(('columnname','a');”但它似乎不起作用。
不,试试这个:set @a:=function_name();select * from table_name where @a
(条件)
嗯……我试试这个……但是查询没有返回结果。只是为了说明这一点 - 我没有使用存储过程来实现它。我想在我们使用的查询窗口中实现这一点。以上是关于在查询条件下调用函数的主要内容,如果未能解决你的问题,请参考以下文章
python 循环为循环的类,它递归调用一个函数直到满足条件,然后移动到下一个函数并调用