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>
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:
Umsetzung:
Option 1:
<code class="language-csharp">Regex.Replace(inputString, @"[^\u0000-\u007F]", string.Empty);</code>
Option 2:
<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>
<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>
<code class="language-sql">SELECT [dbo].[StackOverflowRegexReplace] ('Hello Kitty Essential Accessory Kit', '[^\u0000-\u007F]', '')</code>
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!