SQl Server 2005怎么批量替换用户名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQl Server 2005怎么批量替换用户名相关的知识,希望对你有一定的参考价值。

我有两张表,它们是两个系统导出的。它们数据基本一致,用户名不同,但是是一一对应的;就是比如一个叫A的用户产生的数据,在x系统中导出的数据用户名是A,而在y系统中导出的数据用户名是B。我怎么做能将y系统中导出的用户名B批量修改为A

首先,将两个表存进一个数据库中,
其次,确定两个表中能够确定当前数据行的列。
最后,根据那个确定的列进行关联批量更新即可。追问

没有可以确定的数据列
update Sheet1$ set 用户名=replace(用户名,'张三','王二')

update Sheet1$ set 用户名=replace(用户名,'李四','麻子')
……
这样也可以实现!我自己知道A表中的用户名对应的是B表中的哪个,因为用户名比较多,如果按照上面那样写行数太多,太麻烦。有没有办法可以我把对应的用户名放在一张表,然后用这张表的用户名去替换另外一张表

追答

总有一个可以确定当前数据行的列,(编号/ID/其他)(只要在这列中是唯一值的列)
没有可以确定当前数据行的列,你把用户名放到别的表也是没用,还得一个一个的修改。
想批量更新就得找出可以确定当前数据行的列,然后进行关联批量更新。
另外,如果是替换表的话,也很麻烦,你的表的约束/索引/其他 的约束什么的都得一一的找出来删除,替换后再重新创建。也是很麻烦

参考技术A 你所说的导出是什么意思,既然已经从数据库导到其他载体中了,那还跟数据库有关系吗?追问

那个数据不是从我的数据库中导出的,两个系统导出的表,用户名不一样,现在我想修改B表中的用户名为A
update products set description=replace(description,'A','a')

update products set description=replace(description,'B','b')

……
我是不是可以这样一直写下去,把表中的A换成a、B换成b……

追答

如果AB表都在数据库中的话,可以关联修改,

我第一印象感觉你说的是两个系统分别导出了两份excel,然后要修改其中一个excel

update products_A set description=products_B.description
from products_B where products_A.id=products_B.id

追问

非常感谢

参考技术B 关联更新即可,可是你的描述中并没有说清楚怎么关联,也就是如何判断两个表中的不同用户名指的是同一个人追问

因为没有相同项,
update Sheet1$ set 用户名=replace(用户名,'张三','王二')

update Sheet1$ set 用户名=replace(用户名,'李四','麻子')
……
这样也可以实现!我自己知道A表中的用户名对应的是B表中的哪个,因为用户名比较多,如果按照上面那样写行数太多,太麻烦。有没有办法可以我把对应的用户名放在一张表,然后用这张表的用户名去替换另外一张表

追答

我的意思你没有明白,没有关联项怎么修改?没有的话只能一个名字一个名字的更新了

以上是关于SQl Server 2005怎么批量替换用户名的主要内容,如果未能解决你的问题,请参考以下文章

批量删除Sql Server对象(表,存储过程,触发器)

已知字符串str=' hello SQL Server 2005 ',怎么去除字符串中的空格?

SQL Server 2005 中的死锁!两个实时批量更新正在战斗。为啥?

在 SQL Server 2005 中从小表批量复制到大表

sqlserver2005 怎么取每周周一的日期

SQL Server2005还原数据库之前,怎么断开所有的用户链接?