Heim >Backend-Entwicklung >C++ >Wie entferne ich nicht-lateinische Zeichen (wie Â) effizient aus SQL Server VARCHAR-Spalten?

Wie entferne ich nicht-lateinische Zeichen (wie Â) effizient aus SQL Server VARCHAR-Spalten?

Linda Hamilton
Linda HamiltonOriginal
2025-01-11 06:47:45389Durchsuche

How to Efficiently Remove Non-Latin Characters (like Â) from SQL Server VARCHAR Columns?

So löschen Sie nicht-lateinische Zeichen (z. B. Â) in SQL Server VARCHAR-Spalten

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.

Lösung auf Datenbankebene: SQL CLR-Funktionen

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:

  1. Erstellen Sie ein C#-Klassenbibliotheksprojekt in Visual Studio.
  2. Benennen Sie die Standardklasse in 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>
  1. Erstellen Sie das Projekt und kopieren Sie das Ergebnis StackOverflow.dll an einen bekannten Speicherort auf Ihrem Computer.

  2. Importieren Sie die Assembly in SQL Server:

    <code class="language-sql"> CREATE ASSEMBLY [StackOverflow] FROM 'path_to_StackOverflow.dll';</code>
  3. 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.

Lösung auf C#-Codeebene: Regex.Replace

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn