尝试从SQL中的freetext列中删除逗号时出错

时间:2017-09-04 12:24:31

标签: sql sql-server database ssms

USE DBname
UPDATE notestable
SET NotesColumn= REPLACE(NotesColumn,',','') 
WHERE NotesColumn LIKE '%,%'

当我尝试执行此代码时,我收到以下错误。

Msg 8116, Level 16, State 1, Line 2
Argument data type text is invalid for argument 1 of replace function.

我设法在一周前做了类似的代码并删除了这个专栏中的所有引号,但显然我错过了一些东西。 (因为我们为政府机构工作,故意更改名称)

我使用了这篇文章中的代码,但它仍无效:https://social.msdn.microsoft.com/Forums/sqlserver/en-US/12c2e9bf-a5c2-484a-a7b3-021890c61963/how-to-remove-comma-fro-sql-string?forum=transactsql

3 个答案:

答案 0 :(得分:1)

您无法在文本数据类型上运行REPLACE。首先将其转换为[n]varchar(max)

USE DBname
UPDATE notestable
SET NotesColumn= REPLACE(CONVERT(nvarchar(max), NotesColumn),',','') 
WHERE NotesColumn LIKE '%,%'

答案 1 :(得分:1)

尝试它可能问题取决于text数据类型,将其转换为varchar(max)

USE DBname
UPDATE notestable
SET NotesColumn= REPLACE(CONVERT(VARCHAR(MAX), fieldName),',','') 
WHERE NotesColumn LIKE '%,%'

答案 2 :(得分:0)

USE DBname
UPDATE notestable
SET NotesColumn= CAST(REPLACE(CAST(NotesColumn AS nvarchar(MAX)),',','')AS ntext) 
WHERE NotesColumn LIKE '%,%'