如何在SQL Server中的列中添加字符串?
UPDATE [myTable] SET [myText]=' '+[myText]
这不起作用:
数据类型varchar和text在add运算符中不兼容。
您可以在MySQL上使用concat,但是如何在SQL Server上使用?
答案 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