Maison > développement back-end > C++ > Comment éliminer les caractères inhabituels (comme les caractères accentués) d'une colonne Varchar SQL Server à l'aide de .NET et SQL CLR ?

Comment éliminer les caractères inhabituels (comme les caractères accentués) d'une colonne Varchar SQL Server à l'aide de .NET et SQL CLR ?

DDD
Libérer: 2025-01-11 06:50:42
original
709 Les gens l'ont consulté

How to Eliminate Unusual Characters (Like Accented Characters) from a SQL Server Varchar Column Using .NET and SQL CLR?

Effacer les caractères spéciaux (accentués A) dans les colonnes varchar de SQL Server

Question :

Des caractères inattendus, tels que "A accentué", se faufilent dans la colonne varchar du tableau. Ces visiteurs indésirables proviennent très probablement de flux CSV, ce qui rend difficile la traçabilité de leur origine. Comment nettoyer rapidement les colonnes et éliminer ces caractères indésirables au niveau de la base de données et en C# ?

Solution :

Fonction d'expression régulière .NET

Dans le vaste monde de .NET, nous avons trouvé un allié puissant dans les fonctions d'expression régulière comme Regex.Replace. Cet outil puissant nous permet de libérer la puissance de la correspondance de motifs et de la manipulation pour effacer facilement les caractères indésirables :

<code>Regex.Replace(s, @"[^\u0000-\u007F]", string.Empty);</code>
Copier après la connexion

Fonctions SQL CLR

Hélas, SQL Server ne prend pas en charge nativement les expressions régulières, mais les fonctions SQL CLR peuvent combler cette lacune. Grâce à l'intégration de .NET et SQL Server, nous pouvons utiliser les puissantes fonctions des fonctions .NET dans les instructions T-SQL.

Guide étape par étape pour créer des fonctions SQL CLR :

  1. Appelez Visual Studio et appelez le projet de bibliothèque de classes.
  2. Nommez le projet « StackOverflow » et injectez-y le code suivant :
<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>
Copier après la connexion
  1. Montrez la puissance de votre création en construisant des projets. Entrez dans le temple de SQL Server Management Studio et guidez-le jusqu'au chemin d'accès à la base de données. Forte de ces connaissances, la commande suivante créera pour vous le chemin vers StackOverflow.dll :

    <code> CREATE ASSEMBLY [StackOverflow] FROM 'C:\Users\gotqn\Desktop\StackOverflow\StackOverflow\bin\Debug\StackOverflow.dll';</code>
    Copier après la connexion
  2. Créer une fonction 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>
    Copier après la connexion

Libérez la magie

Vos fonctions SQL CLR sont prêtes à vous donner un accès direct aux fonctions d'expression régulière .NET :

<code>SELECT [dbo].[StackOverflowRegexReplace] ('Hello Kitty Essential Accessory Kit', '[^\u0000-\u007F]', '')

// Hello Kitty Essential Accessory Kit</code>
Copier après la connexion

Grâce à cette nouvelle puissance, vous pouvez facilement nettoyer les caractères indésirables des colonnes varchar de SQL Server, garantissant ainsi la pureté de vos données.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal