1

SQL テーブルに特殊文字があり、特殊文字を削除したいと考えています。

XML を壊すすべての文字を取り除く関数があります。

fn_RemoveBadXMLChars(data) 

これは次のようなことを行います:

REPLACE(@ResultVar,'ÿ','')

100 個の置換ステートメントを使用する代わりに、すべての特殊文字を削除する簡単な方法はありますか?

4

3 に答える 3

4

次のように、置換する各値のレコードを含むフィルター テーブルを作成できます。

CREATE TABLE FilterTable (
    FilterCharacter nchar(1) primary key
)

INSERT INTO FilterTable SELECT 'ÿ'
INSERT INTO FilterTable SELECT 'o'

次に、変数を使用して、次のようにフィルター テーブルを置き換えます。

DECLARE @ResultVar nvarchar(50)
SET @ResultVar = 'Bobbÿ'

SELECT @ResultVar = REPLACE(@ResultVar, FilterCharacter, '')
FROM FilterTable   

SELECT @ResultVar
于 2012-11-27T20:21:34.817 に答える
1

私はLittleBobbyTablesの答えが好きですが、別の方法は、関数コードを次のように変更することです

   declare @value as varchar(100) = ' 98;;445498ÿThis is test     ';
   declare @len as int = LEN(@value);
   declare @i as int = 1;
   declare @work as varchar(1);
   declare @retValue as varchar(max) = '';
   declare @asciiValue as int

   while @i <= @len begin
     set @i = @i + 1;
     set @work = SUBSTRING(@value,@i,1);
     set @asciiValue = ASCII(@work);    
     -- Allow space(32) though } (125)
     if (@asciiValue between 32 and 125) and @asciiValue not in (38) -- Exclude
       set @retValue = @retValue + @work;
  end
  print @retValue
于 2012-11-27T20:34:31.993 に答える