Bạn có thể sử dụng .net các hàm biểu thức chính quy. Ví dụ:sử dụng Regex.Replace :
Regex.Replace(s, @"[^\u0000-\u007F]", string.Empty);
Vì không có hỗ trợ cho các biểu thức chính quy trong SQL Server bạn cần tạo SQL CLR hàm số. Thông tin thêm về .net tích hợp trong SQL Server có thể được tìm thấy ở đây:
- Mẫu các hàm tiện ích chuỗi - các ví dụ hoạt động đầy đủ
- Nấc thang lên SQLCLR - vẫn đang được tiến hành
- Giới thiệu về Tích hợp CLR SQL Server - tài liệu chính thức
Trong trường hợp của bạn:
-
Mở
Visual Studiovà tạoClass Library Project:
-
Sau đó đổi tên lớp thành
StackOverflowvà dán mã sau vào tệp của nó: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)); } } -
Bây giờ, hãy xây dựng dự án. Mở
SQL Server Management Studio. Chọn cơ sở dữ liệu của bạn và thay thế giá trị đường dẫn củaFROMsau mệnh đề phù hợp vớiStackOverflow.dllcủa bạn :CREATE ASSEMBLY [StackOverflow] FROM 'C:\Users\gotqn\Desktop\StackOverflow\StackOverflow\bin\Debug\StackOverflow.dll'; -
Cuối cùng, tạo
SQL CLRchức năng:CREATE FUNCTION [dbo].[StackOverflowRegexReplace] (@input NVARCHAR(MAX),@pattern NVARCHAR(MAX), @replacement NVARCHAR(MAX)) RETURNS NVARCHAR(4000) AS EXTERNAL NAME [StackOverflow].[StackOverflow].[Replace] GO
Bạn đã sẵn sàng sử dụng RegexReplace .net hoạt động trực tiếp trong T-SQL của bạn tuyên bố:
SELECT [dbo].[StackOverflowRegexReplace] ('Hello Kitty Essential Accessory Kit', '[^\u0000-\u007F]', '')
//Hello Kitty Essential Accessory Kit