SQL Server更新列,其中包含另一列的值

时间:2016-10-25 22:14:27

标签: sql sql-server tsql

我有两个SQL表:

用户

  • UserId(nvarchar)
  • Tags(nvarchar)

配置文件

  • UserId(nvarchar)
  • Tags(nvarchar)

示例:

用户表:

UserId      Tags
----------------------------------
1           tag1,tag2,tag3,tag4
2           tag1,tag2
3           tag1
4           tag2,tag3,tag4

后,Profile表标签应为

个人资料表:

UserId      Tags
-------------------------------------
1           ["tag1","tag2","tag3","tag4"]
2           ["tag1","tag2"]
3           ["tag1"]
4           ["tag2","tag3","tag4"]

目前,用户标记存储在User列的Tags表中,如下所示,以逗号分隔:tag1,tag2,tag3,tag4。也可以列出一个单独的标签:tag1(不存在逗号)。

我需要"移动/复制" “配置文件”表中的标签以下列格式标记列(字符串数组):["tag1","tag2","tag3","tag4"]

所以基本上在我的更新语句中,第二行:SET Profile.Tags = UA.TAGSUA.TAGS值应转换为字符串数组。

UPDATE Profile
SET Profile.Tags = UA.TAGS (UA.TAGS value should be an array) 
FROM Profile UP INNER JOIN User UA ON UP.UserId = UA.UserId

我是如何实现这一目标的?

1 个答案:

答案 0 :(得分:2)

UPDATE Profile
SET Profile.Tags = '["'+ REPLACE(UA.TAGS,',','","') + '"]'
FROM Profile UP
INNER JOIN User UA
on UP.UserId = UA.UserId