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 Studio
và tạoClass Library Project
: -
Sau đó đổi tên lớp thành
StackOverflow
và 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ủaFROM
sau mệnh đề phù hợp vớiStackOverflow.dll
của bạn :CREATE ASSEMBLY [StackOverflow] FROM 'C:\Users\gotqn\Desktop\StackOverflow\StackOverflow\bin\Debug\StackOverflow.dll';
-
Cuối cùng, tạo
SQL CLR
chứ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