Sql server 使用同一行中其他列的数据更新表列

Sql server 使用同一行中其他列的数据更新表列,sql-server,Sql Server,我有一个表,它有几列文本数据。目标是将这些列连接到同一表和同一行中的单个不同列中 允许我执行此操作的SQL Server查询语法是什么?类似以下内容: UPDATE myTable SET X = Y + Z 可能是误解,但: Alter table myTable add combinedColumn Varchar(1000); Update myTable set combinedColumn = textField1 + textField2; 你一定要复制你的数据吗?如果其中一个

我有一个表,它有几列文本数据。目标是将这些列连接到同一表和同一行中的单个不同列中

允许我执行此操作的SQL Server查询语法是什么?

类似以下内容:

UPDATE myTable SET X = Y + Z

可能是误解,但:

Alter table myTable add combinedColumn Varchar(1000);

Update myTable set combinedColumn = textField1 + textField2;

你一定要复制你的数据吗?如果其中一个列值发生更改,则必须更新连接的值

计算列:

alter table dbo.MyTable add ConcatenatedColumn = ColumnA + ColumnB
或视图:

create view dbo.MyView as
select ColumnA, ColumnB, ColumnA + ColumnB as 'ConcatenatedColumn'
from dbo.MyTable

现在,您可以更新ColumnA或ColumnB,ConcatenatedColumn将始终保持同步。当然,如果这是您需要的行为。

但是我如何查询同一个表以从其他列中获取数据?在您的示例中,y和z是指列还是值?好的,我明白了,您不需要进行子选择。明白了。值得注意的是,串联中的所有字段都必须包含一个值。如果有空值,则整个字段设置为空。@Jason Miesionczek:Re空值:如果您不希望出现这种行为,请将列包装成一个联合体,如下所示:
update myTable set X=coalesce(Y',)+coalesce(Z',)
,对于连接的文本数据,您应该解释为什么这是目标。为什么要将同一数据存储两次?数据位于一个列中,该列在多个表中一致命名,以便在内部搜索函数中使用。如果所有的文本数据都包含在一列中,那么搜索具有不同类型数据的不同表就容易多了。因此,创建一个具有该名称的计算列,或者创建一个具有该名称的列的视图。是否确实要在每次列数据更改时重复更新?这只是白费力气。你为什么要这么做?是否要存储可在查询时计算的冗余数据(如果经常这样做,请使用视图)?“你至少考虑过计算列吗?”亚伦·伯特兰,请看我对你答案的评论
create view dbo.MyView as
select ColumnA, ColumnB, ColumnA + ColumnB as 'ConcatenatedColumn'
from dbo.MyTable