2012-06-07 31 views
1

因爲我的錶行有數據是開始和結束與非字母字符,如「。」,「;」,「,」等。我需要從字符串中刪除它們。我怎樣才能做到這一點 ?我已經做了這樣的使用類似的語句,我需要搜索每個模式並過濾。還有其他更好的方法嗎?查詢刪除非字母字符從開始和SQL Server中的字符串結尾

select lrno,free_text , 
(CASE 
WHEN free_text LIKE ',%' THEN SUBSTRING (free_text,2,len(free_text)-1) 
END) FREE_TEXT_TRIM 
from vwLRClass3_FreeText 
ORDER BY PROPERTY_TEXT_VALUE 
+0

你可以發表你試過的嗎? –

回答

0

下面的函數將從字符串中刪除其他非字母字符。

IF object_id('dbo.GetAlphachars') is not NULL 
    DROP FUNCTION dbo.GetNumeric 
GO 

CREATE FUNCTION dbo.GetAlphachars (@strAlphachars VARCHAR(256)) 
RETURNS VARCHAR(256) 
AS 

BEGIN 
DECLARE @intAlpha INT 
SET  @intAlpha = PATINDEX('%[^a-z]%', @strAlphachars) 

BEGIN 
WHILE @intAlpha > 0 
BEGIN 
SET @strAlphachars = STUFF(@strAlphachars, @intAlpha, 1, '') 
SET @intAlpha = PATINDEX('%[^a-z]%', @strAlphachars) 
END 
END 
RETURN ISNULL(@strAlphachars ,0) 
END 
GO 

例子。

CREATE table vish(val varchar(20)); 

INSERT into vish values('.,,.?ishhh>...,'); 

SELECT dbo.getalphachars(val) from vish; 

result 
------------ 
ishhh 
相關問題