如何将字符串添加到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