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

时间:2019-02-26 15:44:43

标签: sql sql-server sql-update rows concat

以下情况:

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

 Rowid UniqueID Name Birthdate Town ....
   1     null    Joe  Jan-93    Cologne
   2     null    Nick Okt-00    London

我正在构建此TempTable来为数据库中的所有数据创建一个唯一ID TempTable由两个循环创建,这些循环遍历我的所有数据库表和列,并将所有主键数据复制到此TempTable。

我的目的是用数据的concat值更新我的TempTable中的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值的第三个循环?

2 个答案:

答案 0 :(得分:2)

您可以尝试

Update <YourTableName>
set UniqueId = ISNULL(Name, '') +  ISNULL(Cast(Birthdate as Varchar(10), '') + ISNULL(Town, '')

答案 1 :(得分:0)

您可以将CONCAT()UPDATE语句一起使用,而不需要任何循环:

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