2010-03-03 27 views

Trả lời

8

Bạn có thể tạo một thủ tục được lưu trữ CLR để thực hiện thay thế biểu thức chính quy. Dưới đây là một bài viết về chủ đề đó: http://weblogs.sqlteam.com/jeffs/archive/2007/04/27/SQL-2005-Regular-Expression-Replace.aspx

Sau đó, bạn có thể làm một cái gì đó như thế này:

UPDATE your_table 
SET col1 = dbo.RegExReplace(col1, '[^A-Za-z]',''); 

EDIT: Kể từ CLR không phải là một lựa chọn, kiểm tra this liên kết, có một chức năng dbo.RegexReplace có được viết bằng t-sql, không phải CLR. Bạn có thể sử dụng chức năng đó theo cách sau đây:

Trước tiên, bạn cần phải chạy này để kích hoạt Ole:

sp_configure 'show advanced options', 1; 
GO 
RECONFIGURE; 
GO 
sp_configure 'Ole Automation Procedures', 1; 
GO 
RECONFIGURE; 
GO 

Sau đó tạo các dbo.RegexReplace chức năng nhất định tại liên kết tôi cung cấp.

Sau đó, bạn có thể làm điều này:

create table your_table(col1 varchar(500)) 
go 

insert into your_table values ('aBCCa1234!!fAkk9943'); 

update your_table set col1 = dbo.RegexReplace('[^A-Za-z]','',col1,1,1); 

select * from your_table 

Result: 
aBCCafAkk 
+0

.NET CLR không phải là một tùy chọn. Cảm ơn mặc dù. Cần phải trong SQL tinh khiết –

1

Bạn có thể thử tạo một UDF (người dùng định nghĩa chức năng) và sau đó sử dụng nó trong các truy vấn của bạn:

Sau đó làm một truy vấn tương tự như:

SELECT * FROM myTable WHERE find_regular_expression(myCol, '[^a-zA-Z]') 

Nó cũng xuất hiện sự ủng hộ có thể có nguồn gốc ở các phiên bản sau của SQL Server, chắc chắn 2008 R2, thông qua mdq.RegexMatches function (Một phần của Master Data Dịch vụ).

http://msdn.microsoft.com/en-us/library/ee633829(SQL.105).aspx

+1

Nhưng anh ta cần phải thay thế mẫu phù hợp, không chỉ tìm thấy nó. – dcp

Các vấn đề liên quan