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
Freigeben: 2025-01-11 06:47:45
Original
387 Leute haben es durchsucht

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>
Nach dem Login kopieren
  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>
    Nach dem Login kopieren
  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>
    Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage