抱歉,如果这不合适,但实际上这是'为什么'而不是'如何'.不确定是否合适,但不知道一个更好的地方问我想不出如何用谷歌来表达我想要的东西.
IF 'hell' = 'freezing over'
BEGIN
SELECT log(0)
END
Run Code Online (Sandbox Code Playgroud)
看那个陈述.没有一个世界,其中IF条款将是真实的.如果我尝试运行它,我希望SQL跳过IF子句并移到最后.相反,我得到:
An invalid floating point operation occurred.
Run Code Online (Sandbox Code Playgroud)
这很奇怪.所以我猜这只是SQL做事的方式.除了...
IF 'hell' = 'freezing over'
BEGIN
SELECT 1/0
END
Run Code Online (Sandbox Code Playgroud)
这里没有错误.IF子句中的语句仍应生成错误.谁能解释为什么这不会发生?
这是在调试大量SQL计算时出现的,其中EXP(SUM(LOG()))用于在if子句中累积数据.我可以改变代码来阻止再次发生这种情况,但为什么它会在一个未满足的IF子句中进行评估.
干杯.
编辑:额外的娱乐.试着抓?Pffft
IF 1=2
BEGIN
BEGIN TRY
SELECT SQRT(-1)
END TRY
BEGIN CATCH
END CATCH
END
Run Code Online (Sandbox Code Playgroud)
非数学:
IF 1=2
BEGIN
SELECT SUBSTRING('hello',-1,-1)
END
Run Code Online (Sandbox Code Playgroud)