我已經看到類似的問題在本網站的其他地方問過,但更多的是在優化環境中。指定(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