Maison >développement back-end >C++ >Comment supprimer efficacement les caractères non latins (comme Â) des 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.
É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 :
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>
Construisez le projet et copiez le StackOverflow.dll
résultant dans un emplacement connu sur votre machine.
Importez l'assembly dans SQL Server :
<code class="language-sql"> CREATE ASSEMBLY [StackOverflow] FROM 'path_to_StackOverflow.dll';</code>
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é.
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!