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