我怎样才能防止这个函数执行两次,它会执行两次还是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/

10-13 09:17