Beim Importieren von Daten aus Datenquellen von Drittanbietern (z. B. CSV-Dateien) stoßen Sie häufig auf seltsame Zeichen (z. B. Â) in SQL Server-VARCHAR-Spalten. Dies ist ein häufiges Problem, das durch unsichere Codierungsmethoden verursacht wird. Es gibt jedoch effiziente Möglichkeiten, diese Zeichen zu bereinigen und zu entfernen, sowohl auf Datenbankebene als auch auf Codeebene.
Da SQL Server reguläre Ausdrücke nicht nativ unterstützt, können Sie eine SQL CLR-Funktion erstellen, um die regulären Ausdrucksfunktionen von .NET zu nutzen. Die spezifischen Schritte sind wie folgt:
StackOverflow
um und fügen Sie den folgenden Code ein: <code class="language-csharp">public class StackOverflow { [SqlFunction(DataAccess = DataAccessKind.None, IsDeterministic = true, Name = "RegexReplace")] public static SqlString Replace(SqlString sqlInput, SqlString sqlPattern, SqlString sqlReplacement) { string input = (sqlInput.IsNull) ? string.Empty : sqlInput.Value; string pattern = (sqlPattern.IsNull) ? string.Empty : sqlPattern.Value; string replacement = (sqlReplacement.IsNull) ? string.Empty : sqlReplacement.Value; return new SqlString(Regex.Replace(input, pattern, replacement)); } }</code>
Erstellen Sie das Projekt und kopieren Sie das Ergebnis StackOverflow.dll
an einen bekannten Speicherort auf Ihrem Computer.
Importieren Sie die Assembly in SQL Server:
<code class="language-sql"> CREATE ASSEMBLY [StackOverflow] FROM 'path_to_StackOverflow.dll';</code>
SQL CLR-Funktion erstellen:
<code class="language-sql"> CREATE FUNCTION [dbo].[StackOverflowRegexReplace] (@input NVARCHAR(MAX), @pattern NVARCHAR(MAX), @replacement NVARCHAR(MAX)) RETURNS NVARCHAR(4000) AS EXTERNAL NAME [StackOverflow].[StackOverflow].[Replace] GO</code>
Nachdem Sie die Funktion erstellt haben, können Sie sie direkt in einer T-SQL-Anweisung verwenden, um Zeichen schnell und effizient zu ersetzen:
<code class="language-sql">SELECT [dbo].[StackOverflowRegexReplace] ('Hello Kitty Essential Accessory Kit', '[^\u0000-\u007F]', '')</code>
Dadurch wird die Zeichenfolge „Hello Kitty Essential Accessories Kit“ zurückgegeben, wobei das Â-Zeichen entfernt wurde.
Wenn Sie eine C#-Lösung bevorzugen, können Sie die Methode Regex.Replace
verwenden, um die gleiche Zeichenersetzung durchzuführen:
<code class="language-csharp">string input = "Hello Kitty Essential Accessory Kit"; string output = Regex.Replace(input, @"[^\u0000-\u007F]", string.Empty); Console.WriteLine(output); // "Hello Kitty Essential Accessory Kit"</code>
Diese Methode bietet eine einfache und zuverlässige Möglichkeit, nicht-lateinische Zeichen in C#-Code zu entfernen.
Das obige ist der detaillierte Inhalt vonWie entferne ich nicht-lateinische Zeichen (wie Â) effizient aus SQL Server VARCHAR-Spalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!