在列数据类型 TEXT SQL 服务器上使用 REPLACE

Use REPLACE on column data type TEXT SQL Server

我尝试使用此代码来解决列类型文本上的重音符号:

UPDATE [AcuerdateWEB].[dbo].[Actividad]
SET Descripcion = REPLACE(CAST(Descripcion AS nvarchar(max)), 'ó', '&oacute')
WHERE Descripcion like '%&oacute%'

问题是该列的数据类型是text,无法替换;但是当我使用上面的代码时,显示查询成功并显示受影响的总行数

是TEXT还是NTEXT?您正在替换中混合类型。

它没有错误地完成但没有做任何事情的原因是你要求它用 &oacute 替换任何 ó,并且只在有 &oacute 的记录中。

目前的写法,你想用另一个替换哪个是模棱两可的,所以我会展示两个。

如果你想用&oacute替换ó

UPDATE [AcuerdateWEB].[dbo].[Actividad]
SET Descripcion = REPLACE(CAST(Descripcion AS VARCHAR(MAX)), 'ó', '&oacute')
WHERE Descripcion like '%ó%';

如果你想用ó替换&oacute

UPDATE [AcuerdateWEB].[dbo].[Actividad]
SET Descripcion = REPLACE(CAST(Descripcion AS VARCHAR(MAX)), '&oacute', 'ó')
WHERE Descripcion like '%&oacute%';

此外,如果数据类型确实是 NTEXT,只需将 VARCHAR(MAX) 更改为 NVARCHAR(MAX) 并在 3 个字符串文字前加上 N 前缀,如:

UPDATE [AcuerdateWEB].[dbo].[Actividad]
SET Descripcion = REPLACE(CAST(Descripcion AS NVARCHAR(MAX)), N'ó', N'&oacute')
WHERE Descripcion like N'%ó%';