Heim > Backend-Entwicklung > C++ > Wie entferne ich ungewöhnliche Zeichen aus einer SQL Server-VARCHAR-Spalte?

Wie entferne ich ungewöhnliche Zeichen aus einer SQL Server-VARCHAR-Spalte?

Linda Hamilton
Freigeben: 2025-01-11 09:03:45
Original
427 Leute haben es durchsucht

How to Remove Unusual Characters from a SQL Server VARCHAR Column?

Ungewöhnliche Zeichen aus SQL Server VARCHAR-Spalten entfernen

Hintergrund:

Bestimmte nicht standardmäßige Zeichen, insbesondere Zeichen mit diakritischen Zeichen (z. B. mit einem Hut), werden in SQL Server-Varchar-Spalten gespeichert. Dieses Problem ergibt sich aus der eingeschränkten Kontrolle über den Import der CSV-Datenquelle.

Lösung:

Option 1: Verwenden Sie reguläre .NET-Ausdrücke

In C# können Sie reguläre Ausdrücke verwenden, um diese Zeichen zu entfernen. Sie können die String.Replace-Methode wie unten gezeigt verwenden:

<code class="language-csharp">Regex.Replace(s, @"[^\u0000-\u007F]", string.Empty);</code>
Nach dem Login kopieren

Option 2: SQL CLR-Funktion erstellen

Da SQL Server reguläre Ausdrücke nicht nativ unterstützt, können Sie eine SQL CLR-Funktion erstellen. Dies erfordert:

  • Erstellen Sie ein .NET-Klassenbibliotheksprojekt in Visual Studio
  • Verwenden Sie reguläre Ausdrücke, um die Ersetzungsfunktion zu implementieren
  • Erstellen Sie das Projekt und fügen Sie die Assembly zur SQL Server-Datenbank hinzu
  • Erstellen Sie eine SQL CLR-Funktion, die eine .NET-Funktion umschließt

Umsetzung:

Option 1:

<code class="language-csharp">Regex.Replace(inputString, @"[^\u0000-\u007F]", string.Empty);</code>
Nach dem Login kopieren

Option 2:

  • Erstellen Sie eine .NET-Klasse namens StackOverflow mit dem folgenden Code:
<code class="language-csharp">[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
  • Erstellen Sie das Projekt und fügen Sie die Assembly zur SQL Server-Datenbank hinzu
  • 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
  • Anwendungsbeispiel:
<code class="language-sql">SELECT [dbo].[StackOverflowRegexReplace] ('Hello Kitty Essential Accessory Kit', '[^\u0000-\u007F]', '')</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie entferne ich ungewöhnliche Zeichen aus einer SQL Server-VARCHAR-Spalte?. 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