从另一个表中选择多个值并放入一个由 - 分割的字符串
Posted
技术标签:
【中文标题】从另一个表中选择多个值并放入一个由 - 分割的字符串【英文标题】:Select multi value from another table and put in one string split by - 【发布时间】:2015-07-11 06:44:56 【问题描述】:我在 MS SQL Server 中有 2 个表。
表 1
ID Name
-------------
10 Series
11 Movie
12 Music
13 Other
表 2
ID IDCatg Value
---------------------------
1 10 Hannibal
2 10 Blacklist
3 10 POI
4 11 Hitman
5 11 SAW
6 11 Spider man
7 12 taylor swift
8 12 britney spears
我想在表 2 中按 IDCatg 选择并在表 1 中创建一个新列,如下所示:
IDCatg Name Value
--------------------------------------------
10 Series Hannibal-Blacklist-POI
11 Movie Hitman-SAW-Spider man
12 Music taylor swift-britney spears
我怎样才能通过视图做到这一点?
【问题讨论】:
Concatenate row values T-SQL的可能重复 【参考方案1】:您可以使用STUFF
:
SELECT T21.IDCatg, T1.Name,
[Value] = STUFF((
SELECT '-' + T22.[Value]
FROM Table2 T22
WHERE T21.IDCatg = T22.IDCatg
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM Table2 T21 JOIN
Table1 T1 ON T1.ID=T21.IDCatg
GROUP BY T21.IDCatg,T1.Name
结果:
IDCatg Name Value
---------------------------------------------
10 Series Hannibal-Blacklist-POI
11 Movie Hitman-SAW-Spider man
12 Music taylor swift-britney spears
SQL Fiddle 中的示例结果
编辑:
Value
的类型为 int 时,可以强制转换为 varchar:
[Value] = STUFF((
SELECT '-' + CAST(T22.[Value] AS Varchar(MAX))
【讨论】:
谢谢,它可以工作,但如果我的值类型是 int,我会收到此错误:将 varchar 值“,”转换为数据类型 int 时转换失败 通常当我的值类型是 int 时,'-' 不起作用!我必须做什么 另一个问题请!如果我想将值加入另一个表并用表 3 中的其他字段替换值,我该怎么做? @mosyflasher:只需将Table2
替换为新表的名称,将Value
替换为新的字段名称即可。
我不认为这是真的。因为我这里需要 3 张桌子。我的意思是我们所做的这个选择是真的,现在我只想通过加入表 3 来替换值。示例:Hannibal-Blacklist-POI => x-y-z以上是关于从另一个表中选择多个值并放入一个由 - 分割的字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何防止在表中的多个下拉列表中选择相同的值并 POST 到服务器
获取不同视图中存在的选择器视图的选定值并在其他视图中使用字符串
如何在python中使用正则表达式在字符串之间选择值并放置在数据框的列中
如何使用第一个表中的逗号分隔值从另一个表中选择行? [复制]