小编Den*_*eev的帖子

如何确定哪一列在插入时引发算术溢出错误?

想象一下,里面有一百个不同的列.想象一下,我有一个用户数据表,我希望将数据复制到基表.所以我写了这个简单的insert-select语句,弹出这个错误.那么,找出哪一列引起错误的最优雅的方法是什么?

我对解决方案的初步想法是将它包装在一个事务中,我将最终回滚并使用一种Divide and Conquer方法:

begin tran

insert into BaseTable (c1,c2,c3,...,cN)
select c1,c2,c3,...,cN 
from UserTable

rollback tran
Run Code Online (Sandbox Code Playgroud)

而这显然失败了.所以我们将列集分成两半,如下所示:

begin tran

insert into BaseTable (c1,c2,c3,...,cK) --where K = N/2
select c1,c2,c3,...,cK --where K = N/2
from UserTable

rollback tran
Run Code Online (Sandbox Code Playgroud)

如果失败则失败的列在另一半.我们继续这个过程,直到找到讨厌的专栏.

还有什么比这更优雅的?

注意:我也发现了这个问题的近乎重复,但它几乎没有答案.

t-sql sql-server sql-server-2005 sql-server-2008

7
推荐指数
1
解决办法
2803
查看次数

SQL - 连接表,其中一列是列表

我正试着加入两张桌子.我遇到的问题是我正在尝试加入的列之一是列表.

因此可以使用"IN"而不是"="来连接两个表.沿着这条路线

SELECT ID  
FROM tableA INNER JOIN  
tableB ON tableB.misc IN tableA.misc  
WHERE tableB.miscTitle = 'help me please'  


tableB.misc = 1  
tableA.misc = 1,2,3  
Run Code Online (Sandbox Code Playgroud)

提前致谢

sql sql-server join list sql-server-2008

2
推荐指数
1
解决办法
161
查看次数

如何创建一个模式绑定函数,该函数计算xml中的节点,然后能够将此结果保存在列中

我有一个xml列,我想在相邻的列中保留一个节点计数.

例如,在下面给出的xml中,我有3个节点a,所以我想输出它.

但是,我遇到的问题是我无法创建一个通用的模式绑定函数,该函数将使用@xml和@nodeName以返回指定节点的计数.

create function dbo.fnXmlCount_a (@xml xml) 
returns int with schemabinding
as begin
return (@xml.value('count(//a)', 'int'))
end

declare @xml xml;
set @xml = '
<r>
 <a></a>
 <b></b>
 <a></a>
 <c>
  <a></a> 
 </c>
</r>'

select dbo.fnXmlCount_a(@xml) aCount
Run Code Online (Sandbox Code Playgroud)

最后一次操作的结果是:

aCount
3
Run Code Online (Sandbox Code Playgroud)

然后我在该表上创建一个具有此xml字段的列,如下所示:

alter table [XmlTable] add column [aCount] as (dbo.fnXmlCount_a([xml])) persisted
Run Code Online (Sandbox Code Playgroud)

但我真正想做的是:

alter table [XmlTable] add column [aCount] as (dbo.fnXmlNodeCount([xml], 'a')) persisted
Run Code Online (Sandbox Code Playgroud)

谢谢!

更新:

我们都知道这//很慢,所以如果你能弄清楚如何通过这条路径来搜索另一个变量,那就太好了.默认情况下,此搜索路径将是//.

sql t-sql sql-server sql-server-2005 sql-server-2008

0
推荐指数
1
解决办法
7948
查看次数

标签 统计

sql-server ×3

sql-server-2008 ×3

sql ×2

sql-server-2005 ×2

t-sql ×2

join ×1

list ×1