以下情况:
我有一个动态(按列)构建的表...例如:
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值的第三个循环?
答案 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);