Vous pouvez utiliser .net fonctions d'expression régulière. Par exemple, en utilisant Regex.Replace :
Regex.Replace(s, @"[^\u0000-\u007F]", string.Empty);
Comme il n'y a pas de support pour les expressions régulières dans SQL Server vous devez créer un SQL CLR une fonction. Plus d'informations sur le .net intégration dans SQL Server peut être trouvé ici :
- Exemple de fonctions utilitaires de chaîne :exemples de travail complets
- Escalier vers SQLCLR - toujours en cours
- Introduction à l'intégration SQL Server CLR - documentation officielle
Dans votre cas :
-
Ouvrez
Visual Studioet créezClass Library Project:
-
Renommez ensuite la classe en
StackOverflowet collez le code suivant dans son fichier :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)); } } -
Maintenant, construisez le projet. Ouvrez le
SQL Server Management Studio. Sélectionnez votre base de données et remplacez la valeur du chemin duFROMsuivant clause pour correspondre à votreStackOverflow.dll:CREATE ASSEMBLY [StackOverflow] FROM 'C:\Users\gotqn\Desktop\StackOverflow\StackOverflow\bin\Debug\StackOverflow.dll'; -
Enfin, créez le
SQL CLRfonction :CREATE FUNCTION [dbo].[StackOverflowRegexReplace] (@input NVARCHAR(MAX),@pattern NVARCHAR(MAX), @replacement NVARCHAR(MAX)) RETURNS NVARCHAR(4000) AS EXTERNAL NAME [StackOverflow].[StackOverflow].[Replace] GO
Vous êtes prêt à utiliser RegexReplace .net fonctionnent directement dans votre T-SQL déclarations :
SELECT [dbo].[StackOverflowRegexReplace] ('Hello Kitty Essential Accessory Kit', '[^\u0000-\u007F]', '')
//Hello Kitty Essential Accessory Kit