有没有什么方法可以明确说明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