SQL Server - 将字符串添加到文本列(等效的concat)

Axi*_*ili 33 sql t-sql sql-server

如何在SQL Server中的列中添加字符串?

UPDATE [myTable] SET [myText]=' '+[myText]
Run Code Online (Sandbox Code Playgroud)

这不起作用:

数据类型varchar和text在add运算符中不兼容.

您可以在MySQL上使用concat,但是如何在SQL Server上执行?

Tob*_*zer 63

像之前所说的那样最好是将列的数据类型设置为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
Run Code Online (Sandbox Code Playgroud)

希望有所帮助


mar*_*c_s 16

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

自2005年版以来,它已被弃用.使用VARCHAR(MAX)替代,如果你需要超过8000个字符.

TEXT数据类型不支持正常的字符串函数,而VARCHAR(MAX)不会-你的声明会工作得很好,如果你可以只使用VARCHAR类型.


ahs*_*ele 9

+(字符串串联)不SQL Server上的图像工作,ntext或文本数据类型.

实际上,image,ntext和text都已弃用.

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

这就是说,如果您使用的是旧版本的SQL Server而不是想使用UPDATETEXT来执行连接.Colin Stasiuk在他的博客文章专栏文章栏中提供了一个很好的例子(SQL 2000 vs SQL 2005+).


Mei*_*ude 5

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

尽管如此,我并不完全确定这会如何发展。

我还建议不要使用 Text 数据类型,而使用 varchar 代替。

如果这不起作用,请尝试' ' + CAST ([myText] AS VARCHAR(255))


小智 5

UPDATE test SET a = CONCAT(a, "more text")
Run Code Online (Sandbox Code Playgroud)