Maison >développement back-end >C++ >Comment supprimer efficacement les caractères non latins (comme Â) des colonnes VARCHAR de SQL Server ?

Comment supprimer efficacement les caractères non latins (comme Â) des colonnes VARCHAR de SQL Server ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-11 06:47:45391parcourir

How to Efficiently Remove Non-Latin Characters (like Â) from SQL Server VARCHAR Columns?

Comment effacer les caractères non latins (tels que Â) dans les colonnes VARCHAR de SQL Server

Lors de l'importation de données à partir de sources de données tierces (telles que des fichiers CSV), vous rencontrez souvent des caractères étranges (tels que Â) dans les colonnes VARCHAR de SQL Server. Il s'agit d'un problème courant causé par des méthodes d'encodage incertaines. Cependant, il existe des moyens efficaces pour nettoyer et supprimer ces caractères, tant au niveau de la base de données qu'au niveau du code.

Solution au niveau de la base de données : fonctions SQL CLR

Étant donné que SQL Server ne prend pas en charge nativement les expressions régulières, vous pouvez créer une fonction SQL CLR pour tirer parti des capacités d'expressions régulières de .NET. Les étapes spécifiques sont les suivantes :

  1. Créez un projet de bibliothèque de classes C# dans Visual Studio.
  2. Renommez la classe par défaut en StackOverflow et collez le code suivant :
<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>
  1. Construisez le projet et copiez le StackOverflow.dll résultant dans un emplacement connu sur votre machine.

  2. Importez l'assembly dans SQL Server :

    <code class="language-sql"> CREATE ASSEMBLY [StackOverflow] FROM 'path_to_StackOverflow.dll';</code>
  3. Créer une fonction SQL CLR :

    <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>

Après avoir créé la fonction, vous pouvez l'utiliser directement dans une instruction T-SQL pour remplacer rapidement et efficacement des caractères :

<code class="language-sql">SELECT [dbo].[StackOverflowRegexReplace] ('Hello Kitty Essential Accessory Kit', '[^\u0000-\u007F]', '')</code>

Cela renverra la chaîne « Kit d'accessoires essentiels Hello Kitty » avec le caractère  supprimé.

Solution au niveau du code C# : Regex.Replace

Si vous préférez une solution C#, vous pouvez utiliser la méthode Regex.Replace pour effectuer le même remplacement de caractères :

<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>

Cette méthode fournit un moyen simple et fiable d'éliminer les caractères non latins dans le code C#.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn