2010-03-03 32 views

回答

8

您可以創建一個CLR存儲過程來執行正則表達式替換。下面是關於該主題的文章: http://weblogs.sqlteam.com/jeffs/archive/2007/04/27/SQL-2005-Regular-Expression-Replace.aspx

然後,你可以做這樣的事情:

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

編輯: 由於CLR是不是一種選擇,看看this環節,有一個dbo.RegexReplace功能有它是用t-sql編寫的,而不是CLR。您可以使用該功能通過以下方式:

首先,你需要運行這個讓奧萊:

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

然後創建在我提供的鏈接中給出的dbo.RegexReplace功能。

然後,你可以這樣做:

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不是一個選項。不過謝謝。需要使用純SQL – 2010-03-03 20:46:18

1

你可以嘗試創建一個UDF(用戶定義函數),然後用它在查詢:

然後做類似的查詢:

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

它也出現在SQL Server中,肯定2008 R2的更高版本(主數據可能會有更多的原生支持,通過mdq.RegexMatches功能部件服務)。

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

+1

但是他需要替換匹配的模式,而不僅僅是找到它。 – dcp 2010-03-03 20:45:43