2010-06-23 127 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")