Ich habe die folgende ZeichenfolgeWie kann ich Akzente an einer Schnur entfernen?
áéíóú
, die ich es
konvertieren müssenaeiou
Wie kann ich es erreichen? (Ich brauche nicht zu vergleichen, ich brauche die neue Zeichenfolge zu speichern)
Ich habe die folgende ZeichenfolgeWie kann ich Akzente an einer Schnur entfernen?
áéíóú
, die ich es
konvertieren müssenaeiou
Wie kann ich es erreichen? (Ich brauche nicht zu vergleichen, ich brauche die neue Zeichenfolge zu speichern)
Versuchen COLLATE
mit:
select 'áéíóú' collate SQL_Latin1_General_Cp1251_CS_AS
Für Unicode-Daten, versuchen Sie Folgendes:
select cast(N'áéíóú' as varchar(max)) collate SQL_Latin1_General_Cp1251_CS_AS
Ich bin nicht sicher, was Sie in der Übersetzung verlieren können, wenn Sie den zweiten Ansatz verwenden.
aktualisieren
Es sieht aus wie œ
ein Sonderfall ist, und wir haben Groß- und Kleinschreibung getrennt zu behandeln. Sie können es so machen (dieser Code ist ein guter Kandidat für eine benutzerdefinierte Funktion):
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
Ich hatte das gleiche Problem. In Griechisch für die korrekte Umwandlung in UPPER() müssen Sie den Akzent unterdrücken. Das Ändern der Sortierung verursachte Probleme in anderen Anwendungen. Mit einigen REPLACE() - Funktionen hatte ich mehr Kontrolle über das Verhalten bei der Pflege der Sortierung. Unten ist meine ToUpperCaseGR Funktion.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create FUNCTION ToUpperCaseGR
(
@word nvarchar(max)
)
RETURNS nvarchar(max)
AS
BEGIN
-- Declare the return variable here
declare @res nvarchar(max)
set @res = UPPER(@word)
set @res = replace(@res,'Ά','Α')
set @res = replace(@res,'Έ','Ε')
set @res = replace(@res,'Ί','Ι')
set @res = replace(@res,'Ή','Η')
set @res = replace(@res,'Ό','Ο')
set @res = replace(@res,'Ύ','Υ')
set @res = replace(@res,'Ώ','Ω')
-- Return the result of the function
RETURN @res
END
GO
Ωραίος Θάνο, εχχαριστώ. –
Mit dieser Funktion:
CREATE FUNCTION [dbo].[F_RemoveDiacritics] (
@String varchar(max)
) RETURNS varchar(max)
AS BEGIN
DECLARE @StringResult VARCHAR(max);
select @StringResult= @String collate SQL_Latin1_General_Cp1251_CS_AS
return @StringResult
END
ich Lösung bin auf der Suche, die Akzente zu entfernen, aber alle fremden Buchstaben in Unicode verlassen. I.e. Ich muss "á" in "a" umwandeln, aber nicht "я" oder "жопа". –