如何將字符串添加到SQL Server中的列?SQL Server - 將字符串添加到文本列(等效連接)
UPDATE [myTable] SET [myText]=' '+[myText]
這並不工作:
的數據類型爲varchar和文本都在增加操作符不兼容。
您可以在MySQL上使用concat,但是您如何在SQL Server上執行此操作?
如何將字符串添加到SQL Server中的列?SQL Server - 將字符串添加到文本列(等效連接)
UPDATE [myTable] SET [myText]=' '+[myText]
這並不工作:
的數據類型爲varchar和文本都在增加操作符不兼容。
您可以在MySQL上使用concat,但是您如何在SQL Server上執行此操作?
喜歡說是將列的數據類型設置爲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
希望幫助
嗯,嘗試做CAST(' ' AS TEXT) + [myText]
雖然,我並不完全確定這將如何做成。
我也建議不要使用文本數據類型,而是使用varchar。
如果還是不行,請嘗試' ' + CAST ([myText] AS VARCHAR(255))
的+ (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+)中舉了一個很好的例子。
停止在SQL Server中使用TEXT
數據類型!
自2005版以來已棄用。如果您需要超過8000個字符,請改用VARCHAR(MAX)
。
TEXT
數據類型不支持正常的字符串函數,而VARCHAR(MAX)
會 - 如果您只使用VARCHAR類型,那麼您的語句就可以正常工作。之前最好
要加入SQL查詢中的兩個字符串使用函數CONCAT(Express1,Express2,...)
像....
SELECT CODE, CONCAT(Rtrim(FName), " " , TRrim(LName)) as Title FROM MyTable
UPDATE test SET a = CONCAT(a, "more text")
謝謝,但第一個給出了這樣的錯誤 操作數的數據類型的文本是增加操作符無效。 myText是文本類型,而不是varchar,我不知道文本可以有多長時間,它可能很長 – Aximili 2010-06-23 06:12:11
hmm,我想你'可以'使用VARCHAR(MAX)而不是VARCHAR(255),但是似乎可能有更好的方法。 – Meiscooldude 2010-06-23 06:18:55