SQL Server - 将字符串添加到文本列(等效的concat)

时间:2010-06-23 05:57:03

标签: sql sql-server tsql

如何在SQL Server中的列中添加字符串?

UPDATE [myTable] SET [myText]=' '+[myText]

这不起作用:

  

数据类型varchar和text在add运算符中不兼容。

您可以在MySQL上使用concat,但是如何在SQL Server上使用?

6 个答案:

答案 0 :(得分:60)

之前说的最好是将列的数据类型设置为nvarchar(max),但如果不可能,则可以使用强制转换或转换执行以下操作:

-- create a test table 
create table test (
    a text
) 
-- insert test value
insert into test (a) values ('this is a text')
-- the following does not work !!!
update test set a = a + ' and a new text added'
-- but this way it works: 
update test set a = cast ( a as nvarchar(max))  + cast (' and a new text added' as nvarchar(max) )
-- test result
select * from test
-- column a contains:
this is a text and a new text added

希望有所帮助

答案 1 :(得分:16)

停止在SQL Server中使用TEXT数据类型!

自2005年版以来,它已被弃用。如果您需要超过8000个字符,请使用VARCHAR(MAX)

TEXT数据类型不支持普通的字符串函数,而VARCHAR(MAX)确实如此 - 如果你只使用VARCHAR类型,你的语句就可以正常工作。

答案 2 :(得分:9)

+ (String Concatenation)在SQL Server上不适用于image,ntext或text数据类型。

实际上,image,ntext和text是all deprecated

  

ntext,text和image数据类型会   将来的版本中删除   MicrosoftSQL Server。避免使用这些   新开发工作中的数据类型,   并计划修改那些应用程序   目前使用它们。使用nvarchar(max),   varchar(max)和varbinary(max)   代替。

如果您使用的是旧版本的SQL Server而不是希望使用UPDATETEXT来执行连接。 Colin Stasiuk在他的博客文章String Concatenation on a text column (SQL 2000 vs SQL 2005+)中给出了一个很好的例子。

答案 3 :(得分:5)

UPDATE test SET a = CONCAT(a, "more text")

答案 4 :(得分:3)

嗯,试着做CAST(' ' AS TEXT) + [myText]

虽然,我不完全确定这会如何发展。

我还建议不要使用Text数据类型,而是使用varchar。

如果不起作用,请尝试' ' + CAST ([myText] AS VARCHAR(255))

答案 5 :(得分:0)

在SQL Query中使用函数CONCAT(Express1,Express2,...)

连接两个字符串

...一样

SELECT CODE, CONCAT(Rtrim(FName), " " , TRrim(LName)) as Title FROM MyTable