2013-09-26 31 views
1

嗨我想從我的表中刪除特殊字符我嘗試使用存儲過程 可以讓你們任何人都建議更好的方法。我想只刪除某些特殊字符,如?,',",#,而我的日期還有$或其他一些符號。如何刪除桌面上的特殊charectors動態

 CREATE PROCEDURE [dbo].[ScrubData] 
     (
     @TableName Varchar(100) 
     ) 
     AS 
     BEGIN 

     DECLARE @SQL1 nVARCHAR(MAX) 
     DECLARE @SQL2 nVARCHAR(MAX) 
     DECLARE @SQL3 nVARCHAR(MAX) 
     DECLARE @SQL4 nVARCHAR(MAX) 

      select @SQL1 = 
      'update ' + TABLE_NAME + 
      ' set ' + column_name + ' = replace ('+ column_name +', '','','''') 
      where ' + column_name + ' like ''%,%''' 
      from INFORMATION_SCHEMA.COLUMNS 
      where TABLE_NAME = @TableName and COLUMN_NAME like '%load' 

      select @sql2 = 
      'update ' + TABLE_NAME + 
     ' set ' + column_name + ' = replace ('+ column_name +', '''''','''') 
      where ' + column_name + ' like ''%''%''' 
      from INFORMATION_SCHEMA.COLUMNS 

     where TABLE_NAME = @TableName and COLUMN_NAME like '%load' 

     select @SQL3 = 
     'update ' + TABLE_NAME + 
     ' set ' + column_name + ' = replace ('+ column_name +', ''"'','''') 
     where ' + column_name + ' like ''%"%''' 
     from INFORMATION_SCHEMA.COLUMNS 
     where TABLE_NAME = @TableName and COLUMN_NAME like '%load' 

     select @SQL4 = 
     'update ' + TABLE_NAME + 
     ' set ' + column_name + ' = replace ('+ column_name +', ''#'','''') 
     where ' + column_name + ' like ''%#%''' 
     from INFORMATION_SCHEMA.COLUMNS 
     where TABLE_NAME = @TableName and COLUMN_NAME like '%load' 


    print(@sql1) 
     print(@sql2) 
     print(@sql3) 
     print(@sql4) 

     end 

回答

1

嘗試這樣: -

SELECT REPLACE(REPLACE(REPLACE(REPLACE(@str, '!', ''), '#', ''), '$', ''), '&', '');