因此,我有一个SQL脚本将大量行(140,000+)插入到数据库表中。每一行都有一个或多个列,其中包含一个数值。我需要用数字减去一些偏移(见下面的例子)来替换这些数字。有谁知道一种简单快捷的方法或者一个程序来完成它呢?基本上,我只想指定偏移量是什么,并让它在文件中迭代,找到所有的数字,并从每个数字中减去偏移量。
任何和所有的帮助(或指向正确方向的指针)都是非常感谢的!提前感谢!
样本行:
insert into failurelist (failurelist,failurecode,parent,type,orgid) values (6284, 'ABSRBR', null, null, 'ABC');
insert into failurelist (failurelist,failurecode,parent,type,orgid) values (6285, 'SEIZED', '6284', 'PROBLEM', 'ABC');
insert into failurelist (failurelist,failurecode,parent,type,orgid) values (6286, 'ABSRB-PERF', '6285', 'CAUSE', 'ABC');这些是脚本的前3行。对于这个脚本,我想要减去6283 (因此它们从1开始编号,而不是从6284开始)。请注意,一些数值是单引号‘’,而另一些则不是。
发布于 2013-12-12 19:44:17
你就不能写点这样的东西吗?
Update failurelist set failurelist = failurelist - 6283 发布于 2013-12-12 20:48:17
“家长”栏目似乎是一种一元关系,这一事实让我有点困惑。如果主键列是整数,为什么父列要表示为字符串。如果它们都是整数,则只需:
UPDATE failurelist
SET failurelist = failurelist - 6283,
parent = parent - 6283在它当前的形式中,您需要这样做:
DECLARE @failurelist TABLE
(
failurelist INT,
failurecode varchar(20),
parent varchar(20),
type varchar(20),
orgid varchar(20)
)
insert into @failurelist (failurelist,failurecode,parent,type,orgid) values (6284, 'ABSRBR', null, null, 'ABC');
insert into @failurelist (failurelist,failurecode,parent,type,orgid) values (6285, 'SEIZED', '6284', 'PROBLEM', 'ABC');
insert into @failurelist (failurelist,failurecode,parent,type,orgid) values (6286, 'ABSRB-PERF', '6285', 'CAUSE', 'ABC');
UPDATE @failurelist
SET failurelist = failurelist - 6283,
parent = CAST(CAST(parent AS INT) -6283 AS varchar(20))现在,表变量@failurelist包含所需的结果。您只需使用table变量的结果填充实际的表,如下所示
INSERT INTO failurelist
SELECT * FROM @failurelist https://stackoverflow.com/questions/20552660
复制相似问题