有沒有什麼方法可以明確說明WHERE條件發生的順序?我認識到,查詢優化器將着眼於在WHERE子句中的所有部分,以確定最有效的方式來滿足查詢,因爲在這些答案中指出:Sql - WHERE條件的顯式順序?
Does order of where clauses matter in SQL
SQL - Does the order of WHERE conditions matter?
然而,有無法檢查其他條件依賴的條件嗎?答案之一來自這些線程倒是我後,但不提供一個解決方案:
select *
from INFORMATION_SCHEMA.TABLES
where ISNUMERIC(table_name) = 1 and CAST(table_name as int) <> 0
這可能會失敗,因爲CAST能夠確定table_name的字段是否是數字之前評估(因此拋出無效投射錯誤)。
當然,必須有辦法實現這個目標嗎?
不漂亮,但我會接受。謝謝! – McFixit