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