SQL Server:Concat行/列并将结果更新为列

SQL Server:Concat行/列并将结果更新为列,sql,sql-server,sql-update,rows,concat,Sql,Sql Server,Sql Update,Rows,Concat,以下情况: 我有一个动态(按列)构建的表。。。例如: Rowid UniqueID Name Birthdate Town .... 1 null Joe Jan-93 Cologne 2 null Nick Okt-00 London 我正在构建这个系统,以便为数据库中的所有数据创建一个唯一的ID 诱惑表是由两个循环创建的,这两个循环遍历我的所有数据库表和列,并将所有主键数据复制到此诱惑表 我的目标是用数据的concat值更新我的tes

以下情况:

我有一个动态(按列)构建的表。。。例如:

 Rowid UniqueID Name Birthdate Town ....
   1     null    Joe  Jan-93    Cologne
   2     null    Nick Okt-00    London
我正在构建这个系统,以便为数据库中的所有数据创建一个唯一的ID 诱惑表是由两个循环创建的,这两个循环遍历我的所有数据库表和列,并将所有主键数据复制到此诱惑表

我的目标是用数据的concat值更新我的testable中的UniqueID列。。。例如:

    UniqueID
  JoeJan-93Cologne
  NickOkt-00London
你知道如何更新UniqueID吗

我想的是:

Loop 1 going through all Tables
 Select Table of Schema
Loop 2 going through all Columns of Table
 Select Column of Schema

 Copy Column to my Temp 

 -- here an update  like ... set UniqueID = select concat(UniqueID, @Column) 
 -- from @table where RowID = RowID
End loop 2 
end loop 1 
这可能吗 或者我必须打开第三个循环来遍历所有行和concat值吗?

您可以试试这个

Update <YourTableName>
set UniqueId = ISNULL(Name, '') +  ISNULL(Cast(Birthdate as Varchar(10), '') + ISNULL(Town, '')
更新
set UniqueId=ISNULL(姓名“”)+ISNULL(演员阵容(出生日期为Varchar(10),“”)+ISNULL(城镇“”)
您可以将
CONCAT()
UPDATE
语句一起使用,无需任何循环:

UPDATE t
     SET UniqueID = CONCAT(Name, Birthdate, Town);

这让人尖叫。为什么你认为每个表中的每一行都需要有一个数据库范围的唯一值?这有一种非常强烈的代码味道。我正在编写一个脚本来比较xxx的“相等”db模式,但没有任何唯一值…所以我构建了一些(…我不太喜欢except和intersect)您正在尝试比较模式或表中的数据?如果比较数据,跨数据库查询似乎要简单上百万倍。@SeanLange:我的问题是,我需要比较数千个表和模式…您有什么想法(我不是专业开发人员)我不知道您想比较什么。两个数据库上的表结构是否相同?您是否希望其中一个数据库中的所有数据都不在另一个数据库中?