Você pode usar
.net funções de expressão regular. Por exemplo, usando Regex.Replace :Regex.Replace(s, @"[^\u0000-\u007F]", string.Empty);
Como não há suporte para expressões regulares no
SQL Server você precisa criar um SQL CLR função. Mais informações sobre o .net integração no SQL Server pode ser encontrado aqui:- Amostra de funções de utilitário de string - exemplos completos de trabalho
- Escada para SQLCLR - ainda em andamento
- Introdução à integração CLR do SQL Server - documentação oficial
No seu caso:
-
Abra oVisual Studioe crie oClass Library Project:
-
Em seguida, renomeie a classe paraStackOverflowe cole o seguinte código em seu arquivo:
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)); } } -
Agora, construa o projeto. Abra oSQL Server Management Studio. Selecione seu banco de dados e substitua o valor do caminho do seguinteFROMcláusula para corresponder ao seuStackOverflow.dll:
CREATE ASSEMBLY [StackOverflow] FROM 'C:\Users\gotqn\Desktop\StackOverflow\StackOverflow\bin\Debug\StackOverflow.dll'; -
Por fim, crie oSQL CLRfunção:
CREATE FUNCTION [dbo].[StackOverflowRegexReplace] (@input NVARCHAR(MAX),@pattern NVARCHAR(MAX), @replacement NVARCHAR(MAX)) RETURNS NVARCHAR(4000) AS EXTERNAL NAME [StackOverflow].[StackOverflow].[Replace] GO
Você está pronto para usar
RegexReplace .net função diretamente em seu T-SQL declarações: SELECT [dbo].[StackOverflowRegexReplace] ('Hello Kitty Essential Accessory Kit', '[^\u0000-\u007F]', '')
//Hello Kitty Essential Accessory Kit