【发布时间】:2015-03-05 15:35:13
【问题描述】:
美好的一天!
也许你可以帮助我,或者告诉我我想做的事情是不可能的或完全错误的......
我试图创建一个 sqlfiddle,但目前页面似乎已关闭。
(SQL Server 2008) 我有一张表,假设它有 3 列,但是设计它的人没有规范化,所以一列包含多个值,是这样的:
IdCol Col1 Col2 Col3
1 a1 b1 a, b, c
2 a2 b2 d, e, f
如您所见,Col3 包含多个以“,”分隔的值
我想要实现的是创建一个类似于此的视图(不能修改表,因为他们不允许我修改应用程序):
NewIdCol IdCol Col1 Col2 Col3
1 1 a1 b1 a
2 1 a1 b1 b
3 1 a1 b1 c
4 2 a2 b2 d
5 2 a2 b2 e
6 2 a2 b2 f
因此,最终结果将 Col3 值拆分为不同的行,并且复制了每个其他列的值。 (实际的表大约有 20 列,其中 2 列包含多个值,所以我需要对两列都这样做)
起初我认为这很容易...但后来我遇到了如何拆分该字符串的问题...首先我考虑使用拆分功能,但后来我不知道如何将其加入与其余列...
提前致谢。
【问题讨论】:
-
理想情况下,您将希望停止在单个列中存储多个值。这违反了 1NF。同时看看这篇文章。 sqlperformance.com/2012/07/t-sql-queries/split-strings
-
可能与:stackoverflow.com/q/10581772/4584335 重复使用
Split函数仔细查看答案,它完全符合您的要求。
标签: sql-server view split