Maison > développement back-end > C++ > Comment supprimer les caractères inhabituels d'une colonne VARCHAR SQL Server ?

Comment supprimer les caractères inhabituels d'une colonne VARCHAR SQL Server ?

Linda Hamilton
Libérer: 2025-01-11 09:03:45
original
426 Les gens l'ont consulté

How to Remove Unusual Characters from a SQL Server VARCHAR Column?

Supprimer les caractères inhabituels des colonnes VARCHAR de SQL Server

Contexte :

Certains caractères non standard, notamment les caractères avec des signes diacritiques (comme avec un chapeau), sont stockés dans les colonnes varchar de SQL Server. Ce problème résulte d'un contrôle limité sur l'importation de la source de données .csv.

Solution :

Option 1 : Utiliser les expressions régulières .NET

En C#, vous pouvez utiliser des expressions régulières pour supprimer ces caractères. Vous pouvez utiliser la méthode String.Replace comme indiqué ci-dessous :

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

Option 2 : Créer une fonction 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. Cela nécessite :

  • Créer un projet de bibliothèque de classes .NET dans Visual Studio
  • Utilisez des expressions régulières pour implémenter la fonction Remplacer
  • Construisez le projet et ajoutez l'assembly à la base de données SQL Server
  • Créer une fonction SQL CLR qui encapsule une fonction .NET

Mise en œuvre :

Option 1 :

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

Option 2 :

  • Créez une classe .NET appelée StackOverflow avec le code suivant :
<code class="language-csharp">[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
  • Construisez le projet et ajoutez l'assembly à la base de données SQL Server
  • 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
  • Exemple d'utilisation :
<code class="language-sql">SELECT [dbo].[StackOverflowRegexReplace] ('Hello Kitty Essential Accessory Kit', '[^\u0000-\u007F]', '')</code>
Copier après la connexion

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