select 1/0 as test
查询返回错误“遇到的除以零错误”
但是这个很好用:
select count(*) from (select 1/0 as test) subquery
有人可以解释为什么会发生吗?
答案 0 :(得分:2)
它有效,因为sql server不会从子查询中执行1/0
。您只需要计算行数,sql server足够聪明,可以知道这是多余的额外操作。例如,这两个语句不起作用,因为在这种情况下,必须执行1/0
。
select count(*),test from (select 1/0 as test) subquery group by test
select test from (select 1/0 as test) subquery
答案 1 :(得分:-1)
主查询与子查询作为普通SQL语句进行交互,而子查询是纯粹的数学问题,您不能将其除以零。
使用此网站在线编译您的sql语句:
答案 2 :(得分:-1)
“选择* 1/0作为测试;”该查询将不返回任何错误,它将返回表中值为null的表,因此,如果您将其用作“从(选择1/0作为测试)中的select count(*)中的子查询;它将返回值1因为子查询正在创建一个值为null的表,这意味着count将变为1。 1/0使u为空,而不是sql中的无穷大。