SQL Server VARCHAR 列内の予期しない文字のアドレス指定
この記事では、CSV インポートに起因することが多い、SQL Server の VARCHAR 列に不要な文字が表示されるという一般的な問題に取り組みます。 CSV ソースの予防策とともに、データベースと C# アプリケーションの両方のレベルでのソリューションを検討します。
SQL CLR を使用したデータベース ソリューション
SQL Server の組み込み関数には、強力な正規表現機能がありません。 ただし、SQL CLR (共通言語ランタイム) を活用すると、.NET の Regex
クラスの機能を統合できます。 SQL CLR 関数 Replace
は、Visual Studio 内で作成できます。
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)); }
この機能を使用すると、SQL クエリ内で正規表現を直接使用して、不要な文字を削除できます。
C# アプリケーション ソリューション
または、.NET の正規表現機能を使用して、C# アプリケーション内で文字クレンジングを処理することもできます。
Regex.Replace(s, @"[^\u0000-\u007F]", string.Empty);
このコード スニペットは、基本的な ASCII 範囲外の文字を削除します。
CSV ソースでの問題を防ぐ
この問題の再発を防ぐには、CSV データ ソースでの事前の対策が重要です。 次の手順を検討してください:
これらのソリューションと予防策を実装することで、SQL Server の VARCHAR 列から不要な文字を効果的に管理し、削除できます。
以上がSQL Server の VARCHAR 列から予期しない文字を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。