我已经看到类似的问题在本网站的其他地方问过,但更多的是在优化环境中。指定(T)SQL执行顺序
我遇到了在WHERE子句中执行条件的顺序问题。我有一个存储代码的字段,其中大部分都是数字,但其中一些包含非数字字符。我需要对数字代码进行一些操作,如果尝试使用非数字字符串,将导致错误。我试图做类似
WHERE isnumeric(code) = 1
AND CAST(code AS integer) % 2 = 1
有没有什么办法,以确保该ISNUMERIC()执行第一?如果它不,我得到一个错误...
在此先感谢!
您几乎可以肯定需要在这里使用'CASE'表达式,因为SQL不允许您定义评估顺序。 – Gabe 2011-04-01 20:50:14
这里的问题是SQL标准缺少[short-circuit evaluation](http://en.wikipedia.org/wiki/Short-circuit_evaluation)。事实上这很好,但这只是我的看法。 – rsenna 2011-04-01 20:54:54