我有以下字符串
áéíóú
我需要将其转换为
aeiou
我怎样才能实现它? (我不需要比较,我需要新的字符串来保存)
最佳答案
尝试使用COLLATE
:
select 'áéíóú' collate SQL_Latin1_General_Cp1251_CS_AS
对于 Unicode 数据,请尝试以下操作:
select cast(N'áéíóú' as varchar(max)) collate SQL_Latin1_General_Cp1251_CS_AS
我不确定使用第二种方法时您可能会在翻译中丢失什么。
更新
看起来–
是一种特殊情况,我们必须分别处理大小写。您可以这样做(此代码是用户定义函数的良好候选):
declare @str nvarchar(max) = N'ñaàeéêèioô; Œuf un œuf'
select cast(
replace((
replace(@str collate Latin1_General_CS_AS, 'Œ' collate Latin1_General_CS_AS, 'OE' collate Latin1_General_CS_AS)
) collate Latin1_General_CS_AS, 'œ' collate Latin1_General_CS_AS, 'oe' collate Latin1_General_CS_AS) as varchar(max)
) collate SQL_Latin1_General_Cp1251_CS_AS
-- Output:
-- naaeeeeioo; Oeuf un oeuf
用户定义函数
create function dbo.fnRemoveAccents(@str nvarchar(max))
returns varchar(max) as
begin
return cast(
replace((
replace(@str collate Latin1_General_CS_AS, 'Œ' collate Latin1_General_CS_AS, 'OE' collate Latin1_General_CS_AS)
) collate Latin1_General_CS_AS, 'œ' collate Latin1_General_CS_AS, 'oe' collate Latin1_General_CS_AS) as varchar(max)
) collate SQL_Latin1_General_Cp1251_CS_AS
end
关于sql-server - 如何删除字符串上的重音符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3578582/