SQL Server -向文本列添加字符串(concat等效项)

ahy6op9u  于 2022-12-26  发布在  SQL Server
关注(0)|答案(6)|浏览(444)

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

UPDATE [myTable] SET [myText]=' '+[myText]

这行不通:
数据类型varchar和text在add运算符中不兼容。
您可以在MySQL上使用concat,但如何在SQL Server上使用它呢?

uinbv5nw

uinbv5nw1#

如前所述,最好将列的数据类型设置为nvarchar(max),但如果这不可行,您可以使用cast或convert执行以下操作:

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

ntjbwcob2#

停止在SQL Server中使用TEXT数据类型!
从2005年版本开始,它就被弃用了。如果您需要超过8000个字符,请使用VARCHAR(MAX)
TEXT数据类型不支持普通的字符串函数,而VARCHAR(MAX)支持--如果只使用VARCHAR类型,您的语句就可以正常工作。

8e2ybdfx

8e2ybdfx3#

对于image、ntext或text数据类型,+ (String Concatenation)在SQL Server上不起作用。
实际上,image、ntext和text是all deprecated
MicrosoftSQL Server的未来版本中将删除ntext、text和image数据类型。请避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用nvarchar(max)、varchar(max)和varbinary(max)。
也就是说,如果您使用的是较旧版本的SQL Server,则不希望使用UPDATETEXT来执行连接,Colin Stasiuk在他的博客文章String Concatenation on a text column (SQL 2000 vs SQL 2005+)中给出了一个很好的例子。

xmq68pz9

xmq68pz94#

UPDATE test SET a = CONCAT(a, "more text")
bzzcjhmw

bzzcjhmw5#

嗯,试试CAST(' ' AS TEXT) + [myText]
虽然,我不完全确定这将如何成功。
我还建议不要使用Text数据类型,而是使用varchar。
如果不起作用,请尝试' ' + CAST ([myText] AS VARCHAR(255))

cs7cruho

cs7cruho6#

要在SQL查询中连接两个字符串,请使用函数CONCAT(Express1,Express2,...)
就像...

SELECT CODE, CONCAT(Rtrim(FName), " " , TRrim(LName)) as Title FROM MyTable

相关问题