2014-03-06 47 views
0

我在sql server 2008中有一個表,其中一列包含字符串和特殊字符,如 abc;#34; pqr。現在我想要一個函數從該字段中刪除特殊字符和數字;所以輸出結果就像abcpqr。在sql表字段中刪除特殊字符和數字

+0

你有沒有嘗試過任何東西呢? –

回答

2

試試這個

DECLARE @str VARCHAR(400) 
    DECLARE @expres VARCHAR(50) = '%[~,@,#,$,%,&,*,(,),.,!,0-9]%' 
     SET @str = '(remove) ~special~ 10 *characters. 3 5 from string 1 in sql!' 
     WHILE PATINDEX(@expres, @str) > 0 
      SET @str = Replace(REPLACE(@str, SUBSTRING(@str, PATINDEX(@expres, @str), 1),''),'-',' ') 

     SELECT @str 

REFERENCE

0

使用下面的函數

/********************************* 
Removes any characters from 
@myString that do not meet the 
provided criteria. 
*********************************/ 
CREATE FUNCTION dbo.GetCharacters(@myString varchar(500), @validChars varchar(100)) 
RETURNS varchar(500) AS 
BEGIN 

While @myString like '%[^' + @validChars + ']%' 
Select @myString = replace(@myString,substring(@myString,patindex('%[^' + @validChars + ']%',@myString),1),'') 

Return @myString 
END 
Go 

Declare @testStr varchar(1000), 
@i int 

Set @i = 1 
while @i < 255 
Select 
@TestStr = isnull(@TestStr,'') + isnull(char(@i),''), 
@i = @i + 1 

Select @TestStr 
Select dbo.GetCharacters(@TestStr,'a-z') 
Select dbo.GetCharacters(@TestStr,'0-9') 
Select dbo.GetCharacters(@TestStr,'0-9a-z') 
Select dbo.GetCharacters(@TestStr,'02468bferlki') 
0

試試這個: -

DECLARE @var varchar(255) = 'abc;#34;pqr'; 

SELECT 
CONVERT(varchar(255),( 
    SELECT CASE 
      WHEN (ASCII(UPPER(SUBSTRING(@var, Number, 1))) BETWEEN 65 and 90 ) 
      THEN SUBSTRING(@var, Number, 1) 
      END 
    FROM 
    ( 
     Select top(255) number FROM [master]..spt_values 
     where type = 'p' 
    ) AS n 
    WHERE Number <= LEN(@var) 
    FOR XML PATH(''))) as Result 

結果

abcpqr