Sql server 将表中的两列或多列合并为一列

Sql server 将表中的两列或多列合并为一列,sql-server,data-structures,combinations,Sql Server,Data Structures,Combinations,我有一个现有的数据库,其中有一个表需要修改。由于最近请求的一些更改,我需要从表中取出两列,并将这两列中的数据放入表中的现有列中。谢天谢地,它们都是Varchar类型,因此不必转换数据 下面是桌子现在的样子: 这就是我想要的: 我甚至不确定从哪里开始。那么,在不破坏表或丢失任何数据的情况下,最好的方法是什么呢 注意:这不是用于查询的。我想更改表本身的结构以删除这两列,但将它们的数据转储到现有列中。这可以通过一个简单的update语句完成: Update table Set colC = col

我有一个现有的数据库,其中有一个表需要修改。由于最近请求的一些更改,我需要从表中取出两列,并将这两列中的数据放入表中的现有列中。谢天谢地,它们都是Varchar类型,因此不必转换数据

下面是桌子现在的样子:

这就是我想要的:

我甚至不确定从哪里开始。那么,在不破坏表或丢失任何数据的情况下,最好的方法是什么呢


注意:这不是用于查询的。我想更改表本身的结构以删除这两列,但将它们的数据转储到现有列中。

这可以通过一个简单的update语句完成:

Update table
Set colC = colC + char(13) + char(10) + colD +char(13) + char(10) + colE
请注意,
char(13)+char(10)
是一个换行符

确认数据已复制后,使用alter table删除colD和colE

问题是你确定这一举措明智吗?

这一举动似乎违背了关系数据库设计的基本规则。如果这些列存储不同的数据实体,我强烈建议不要这样做。

除非这些值实际上需要合并为单个值(在逻辑级别上),否则这是错误的做法。

这可以通过一个简单的update语句来完成:

Update table
Set colC = colC + char(13) + char(10) + colD +char(13) + char(10) + colE
请注意,
char(13)+char(10)
是一个换行符

确认数据已复制后,使用alter table删除colD和colE

问题是你确定这一举措明智吗?

这一举动似乎违背了关系数据库设计的基本规则。如果这些列存储不同的数据实体,我强烈建议不要这样做。

除非这些值实际上需要合并为单个值(在逻辑级别上),否则这是错误的做法。

这可以通过一个简单的update语句来完成:

Update table
Set colC = colC + char(13) + char(10) + colD +char(13) + char(10) + colE
请注意,
char(13)+char(10)
是一个换行符

确认数据已复制后,使用alter table删除colD和colE

问题是你确定这一举措明智吗?

这一举动似乎违背了关系数据库设计的基本规则。如果这些列存储不同的数据实体,我强烈建议不要这样做。

除非这些值实际上需要合并为单个值(在逻辑级别上),否则这是错误的做法。

这可以通过一个简单的update语句来完成:

Update table
Set colC = colC + char(13) + char(10) + colD +char(13) + char(10) + colE
请注意,
char(13)+char(10)
是一个换行符

确认数据已复制后,使用alter table删除colD和colE

问题是你确定这一举措明智吗?

这一举动似乎违背了关系数据库设计的基本规则。如果这些列存储不同的数据实体,我强烈建议不要这样做。


除非这些值实际上需要合并为单个值(在逻辑级别),否则这是错误的做法。

我必须同意Zohar的观点。虽然这个很好的例子会起作用,但违反1NF会破坏数据库。在表的单个交叉点中存储的值不得超过1个。当您需要更新此文件或查找只有1个其他值的行时,您会遇到多大的麻烦。Windows换行符是另一种方式-
char(13)+char(10)
-所以我可能会使用它。不同的程序将以不同的方式解释字符(10)+字符(13)。也就是说,+1代表“你确定这一举动明智吗?”:)哇,这比我想象的要简单得多。非常感谢。我之所以将三列合并为一列,是因为该表所涉及的表单已更改,并且它已将三个不同的字段合并为一个字段。我被告知对数据库中的表也要这样做,以保留现在应该删除的列中的值。从技术上讲,我仍然可以保留这两列,并使所有新条目只进入一列,但我不认为这样做有什么意义。@joe谢谢你的修复,我总是以错误的顺序获取它们。。。使用
\n
更简单…@david:如果这些值被合并到一个vlue中,而不是试图创建一个类似数组的列,那么你也应该在数据库级别合并它们。我必须同意Zohar的观点。虽然这个很好的例子会起作用,但违反1NF会破坏数据库。在表的单个交叉点中存储的值不得超过1个。当您需要更新此文件或查找只有1个其他值的行时,您会遇到多大的麻烦。Windows换行符是另一种方式-
char(13)+char(10)
-所以我可能会使用它。不同的程序将以不同的方式解释字符(10)+字符(13)。也就是说,+1代表“你确定这一举动明智吗?”:)哇,这比我想象的要简单得多。非常感谢。我之所以将三列合并为一列,是因为该表所涉及的表单已更改,并且它已将三个不同的字段合并为一个字段。我被告知对数据库中的表也要这样做,以保留现在应该删除的列中的值。从技术上讲,我仍然可以保留这两列,并使所有新条目只进入一列,但我不认为这样做有什么意义。@joe谢谢你的修复,我总是以错误的顺序获取它们。。。使用
\n
更简单…@david:如果这些值被合并到一个vlue中,而不是试图创建一个类似数组的列,那么你也应该在数据库级别合并它们。我必须同意Zohar的观点。虽然这个很好的例子会起作用,但违反1NF会破坏数据库。在表的单个交叉点中存储的值不得超过1个。当您需要更新此文件或查找具有o的行时,您会遇到多大的麻烦