SQL Server の varchar 列の特殊文字 (アクセント付き A) を消去します
質問:
「アクセント付き A」などの予期しない文字がテーブルの varchar 列に忍び込んでいます。これらの望ましくない訪問者は CSV フィードから来ている可能性が高いため、その起源を追跡することが困難になります。列を迅速にクリーンアップして、データベース レベルおよび C# でこれらの不要な文字を削除するにはどうすればよいでしょうか?
解決策:
.NET 正規表現関数
.NET の広大な世界では、Regex.Replace のような正規表現関数に強力な味方が見つかりました。この強力なツールを使用すると、パターン マッチングと操作の力を解放して、不要な文字を簡単に消去できます:
<code>Regex.Replace(s, @"[^\u0000-\u007F]", string.Empty);</code>
SQL CLR 関数
残念ながら、SQL Server には正規表現のネイティブ サポートがありませんが、SQL CLR 関数はこのギャップを埋めることができます。 .NET と SQL Server の統合により、.NET 関数の強力な機能を T-SQL ステートメントで使用できます。
SQL CLR 関数を作成するためのステップバイステップ ガイド:
<code>// .NET正则表达式在SQL CLR函数中 using Microsoft.SqlServer.Server; using System; using System.Collections.Generic; using System.Data.SqlTypes; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; 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>
プロジェクトを構築して、あなたの創造力を示してください。 SQL Server Management Studio の神殿に入り、データベースへのパスに誘導します。この知識をもとに、次のコマンドを実行すると StackOverflow.dll へのパスが作成されます。
<code> CREATE ASSEMBLY [StackOverflow] FROM 'C:\Users\gotqn\Desktop\StackOverflow\StackOverflow\bin\Debug\StackOverflow.dll';</code>
SQL CLR 関数の作成:
<code> CREATE FUNCTION [dbo].[StackOverflowRegexReplace] (@input NVARCHAR(MAX),@pattern NVARCHAR(MAX), @replacement NVARCHAR(MAX)) RETURNS NVARCHAR(4000) AS EXTERNAL NAME [StackOverflow].[StackOverflow].[Replace] GO</code>
魔法を解き放て
SQL CLR 関数を使用して、.NET 正規表現関数に直接アクセスできるようになりました:
<code>SELECT [dbo].[StackOverflowRegexReplace] ('Hello Kitty Essential Accessory Kit', '[^\u0000-\u007F]', '') // Hello Kitty Essential Accessory Kit</code>
この新しく発見された機能を使用すると、SQL Server の varchar 列から不要な文字を簡単に削除し、データの純度を確保できます。
以上が.NET と SQL CLR を使用して SQL Server の Varchar 列から異常な文字 (アクセント記号付き文字など) を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。