在sql中的集合函数中捕获空警告
发布时间:2020-12-12 16:35:44 所属栏目:MsSql教程 来源:网络整理
导读:在sql 2008/2012中如何使用调试器来捕获记录中的空值? 看到: drop table abccreate table abc(a int)go insert into abc values(1)insert into abc values(null)insert into abc values(2)select max(a) from abc(1 row(s) affected)Warning: Null value is
在sql 2008/2012中如何使用调试器来捕获记录中的空值?
看到: drop table abc create table abc( a int ) go insert into abc values(1) insert into abc values(null) insert into abc values(2) select max(a) from abc (1 row(s) affected) Warning: Null value is eliminated by an aggregate or other SET operation. 现在可以通过这样做来纠正: SELECT max(isNull(a,0)) FROM abc 这是很好的,直到我来到200线查询与几个级别的嵌套,并且结果集2000奇数记录. – 然后不知道哪一列抛出警告. 如何在SQL调试器中添加条件断点(或者打破警告)? (如果是可能的话) 解决方法第1部分:关于聚合警告…考虑到你的几个层次的嵌套我恐怕没有直接的方式看到哪些记录触发这些警告. 我认为最好的方法是从顶级语句的SELECT部分??删除每个聚合函数,并运行查询,以便您可以看到哪个聚合导致顶层警告(如果有的话) 之后,您应该转到嵌套查询,并将每个子查询,将顶层聚合提供到一个单独的窗口并运行在那里,检查警告.您应该重复此操作以获得更多的嵌套级别,以了解实际导致警告的原因. 您也可以使用以下方法. 第2部分:关于条件断点… 这是一个很好的例子, SELECT A.col1,A.col2,SUM(A.col3) as col3 FROM (SELECT X as col1,Y as col2,MAX(Z) as col3 FROM (SELECT A as X,B as Y,MIN(C) as Z FROM myTableC ) as myTableB ) as myTableA 做这个: SELECT A as X,MIN(C) as Z INTO #tempTableC FROM myTableC IF EXISTS (SELECT * FROM #tempTableC WHERE A IS NULL ) BEGIN SELECT 'A' --- Breakpoint here END SELECT X as col1,MAX(Z) as col3 INTO #tempTableB FROM #tempTableC IF EXISTS (SELECT * FROM #tempTableB WHERE X IS NULL ) BEGIN SELECT 'B' --- Breakpoint here END SELECT col1,col2,SUM(col3) as col3 FROM #tempTableB as myTableA (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |