【发布时间】:2017-12-05 02:54:51
【问题描述】:
我有两个 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"]
目前用户标签存储在Tags 列中的User 表中,如下所示,用逗号分隔:tag1,tag2,tag3,tag4。还可以列出一个标签:tag1(不存在逗号)。
我需要以以下格式(字符串数组)“移动/复制”配置文件表标签列中的这些标签:["tag1","tag2","tag3","tag4"]
所以基本上在我下面的更新语句中,第二行:SET Profile.Tags = UA.TAGS, UA.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
有什么想法可以实现吗?
【问题讨论】:
-
您应该永远在单个列中存储多个值 - 这甚至违反了数据库设计的第一范式。由于您使用的是关系数据库 - 使用它的relational 功能 - 为标签定义一个单独的表
Tags,并在两个@ 之间定义一个“链接”表987654336@ 和Tags,或Profile和Tags...
标签: sql sql-server tsql