-- 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
6条答案
按热度按时间uinbv5nw1#
如前所述,最好将列的数据类型设置为nvarchar(max),但如果这不可行,您可以使用cast或convert执行以下操作:
ntjbwcob2#
停止在SQL Server中使用
TEXT
数据类型!从2005年版本开始,它就被弃用了。如果您需要超过8000个字符,请使用
VARCHAR(MAX)
。TEXT
数据类型不支持普通的字符串函数,而VARCHAR(MAX)
支持--如果只使用VARCHAR类型,您的语句就可以正常工作。8e2ybdfx3#
对于image、ntext或text数据类型,+ (String Concatenation)在SQL Server上不起作用。
实际上,image、ntext和text是all deprecated。
MicrosoftSQL Server的未来版本中将删除ntext、text和image数据类型。请避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用nvarchar(max)、varchar(max)和varbinary(max)。
也就是说,如果您使用的是较旧版本的SQL Server,则不希望使用UPDATETEXT来执行连接,Colin Stasiuk在他的博客文章String Concatenation on a text column (SQL 2000 vs SQL 2005+)中给出了一个很好的例子。
xmq68pz94#
bzzcjhmw5#
嗯,试试
CAST(' ' AS TEXT) + [myText]
虽然,我不完全确定这将如何成功。
我还建议不要使用Text数据类型,而是使用varchar。
如果不起作用,请尝试
' ' + CAST ([myText] AS VARCHAR(255))
cs7cruho6#
要在SQL查询中连接两个字符串,请使用函数CONCAT(Express1,Express2,...)
就像...