我怎样才能防止这个函数执行两次,它会执行两次还是mysql会优化它?
IF(CheckTest(node.id, 1) == 0, NULL, CheckTest(node.id, 1)) as val
问题是我不能从函数本身返回null,因为返回值是一个varchar,所以即使是空集,也会被转换回0。
最佳答案
正如@joachim isaksson所指出的,mysql似乎没有优化它。所以你可以用这个:
SELECT
CASE WHEN (@check:=CheckTest(node.id, 1)) = 0 THEN NULL ELSE @check END as val
关于mysql - 防止在IF语句中两次调用函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15861135/