2010-06-23 64 views

回答

53

喜欢说是将列的数据类型设置为nvarchar(最大),但如果那是不可能的,你可以做用铸以下或转换:

-- 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 

希望帮助

3

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

虽然,我并不完全确定这将如何做成。

我也建议不要使用文本数据类型,而是使用varchar。

如果还是不行,请尝试' ' + CAST ([myText] AS VARCHAR(255))

+0

谢谢,但第一个给出了这样的错误 操作数的数据类型的文本是增加操作符无效。 myText是文本类型,而不是varchar,我不知道文本可以有多长时间,它可能很长 – Aximili 2010-06-23 06:12:11

+0

hmm,我想你'可以'使用VARCHAR(MAX)而不是VARCHAR(255),但是似乎可能有更好的方法。 – Meiscooldude 2010-06-23 06:18:55

8

+ (String Concatenation)的图像,ntext或文本数据类型的SQL Server上不起作用。

实际上,图像,ntext和文本是all deprecated

的ntext,文本和图像数据类型将 在 MicrosoftSQL Server的未来版本中删除。避免在新的开发工作中使用这些 数据类型, 并计划修改 当前使用它们的应用程序。改为使用nvarchar(max), varchar(max)和varbinary(max) 。

这就是说,如果你比你想使用UPDATETEXT来执行你的级联使用SQL Server的旧版本。 Colin Stasiuk在他的博客文章String Concatenation on a text column (SQL 2000 vs SQL 2005+)中举了一个很好的例子。

14

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

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

TEXT数据类型不支持正常的字符串函数,而VARCHAR(MAX)会 - 如果您只使用VARCHAR类型,那么您的语句就可以正常工作。之前最好

0

要加入SQL查询中的两个字符串使用函数CONCAT(Express1,Express2,...)

像....

SELECT CODE, CONCAT(Rtrim(FName), " " , TRrim(LName)) as Title FROM MyTable 
1
UPDATE test SET a = CONCAT(a, "more text")