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
Libérer: 2025-01-11 06:47:45
original
426 Les gens l'ont consulté

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>
Copier après la connexion
  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>
    Copier après la connexion
  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>
    Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal