我尝试使用此代码来解析列类型文本的急性重音:
UPDATE [AcuerdateWEB].[dbo].[Actividad]
SET Descripcion = REPLACE(CAST(Descripcion AS nvarchar(max)), 'ó', 'ó')
WHERE Descripcion like '%ó%'
问题是列的数据类型为text
且无法替换;但当我使用上面的代码时,表明查询成功并显示受影响的行总数
答案 0 :(得分:2)
是TEXT还是NTEXT?您正在REPLACE中混合类型。
它完成没有错误但没有做任何事情的原因是你要求它用ó
替换任何ó
,并且只在具有ó
的记录中。
目前的编写方式,你想用另一个替换哪一个是模棱两可的,所以我会同时展示它们。
如果您想将ó
替换为ó
:
UPDATE [AcuerdateWEB].[dbo].[Actividad]
SET Descripcion = REPLACE(CAST(Descripcion AS VARCHAR(MAX)), 'ó', 'ó')
WHERE Descripcion like '%ó%';
如果您想将ó
替换为ó
:
UPDATE [AcuerdateWEB].[dbo].[Actividad]
SET Descripcion = REPLACE(CAST(Descripcion AS VARCHAR(MAX)), 'ó', 'ó')
WHERE Descripcion like '%ó%';
此外,如果数据类型确实是NTEXT,只需将VARCHAR(MAX)
更改为NVARCHAR(MAX)
,并将3个字符串文字加上N
作为前缀,如下所示:
UPDATE [AcuerdateWEB].[dbo].[Actividad]
SET Descripcion = REPLACE(CAST(Descripcion AS NVARCHAR(MAX)), N'ó', N'ó')
WHERE Descripcion like N'%ó%';