SQL テーブルに特殊文字があり、特殊文字を削除したいと考えています。
XML を壊すすべての文字を取り除く関数があります。
fn_RemoveBadXMLChars(data)
これは次のようなことを行います:
REPLACE(@ResultVar,'ÿ','')
100 個の置換ステートメントを使用する代わりに、すべての特殊文字を削除する簡単な方法はありますか?
SQL テーブルに特殊文字があり、特殊文字を削除したいと考えています。
XML を壊すすべての文字を取り除く関数があります。
fn_RemoveBadXMLChars(data)
これは次のようなことを行います:
REPLACE(@ResultVar,'ÿ','')
100 個の置換ステートメントを使用する代わりに、すべての特殊文字を削除する簡単な方法はありますか?
次のように、置換する各値のレコードを含むフィルター テーブルを作成できます。
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
私は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