ここやインターネット上のどこかで見つけた関数を使用して、フィールドから不正な文字を削除しようとしています。
Create Function [epacube].[StripSpecs](@myString varchar(500),
@invalidChars varchar(100)) RETURNS varchar(500) AS Begin
While PatIndex(@invalidChars, @myString) > 0
Set @myString = Stuff(@myString, PatIndex(@invalidChars, @myString), 1, '')
Return @myString End
私のテーブルでは、フィールド値を次のように設定しました: set DATA_NAME = 'Pro$d)uc^t'
このクエリを実行すると:
SELECT epacube.StripSpecs (
DATA_NAME
,'%$%') FROM TABLE_DATA
それは機能し、Prod)uc^t の値が返されます
ただし、別の特殊文字を追加すると、機能しなくなります。
SELECT epacube.StripSpecs (
DATA_NAME
,'%$)%') FROM TABLE_DATA
元の値 Pro$d)uc^t を返します
私がしなければならないことを達成するための提案はありますか?
編集 以下の回答に従って、機能したコードは次のとおりです。
Create Function [epacube].[StripSpecs](@myString varchar(500), @invalidChars varchar(100))
RETURNS varchar(500) AS
Begin
While PatIndex('%[' + @invalidChars + ']%', @myString) > 0
Set @myString = Stuff(@myString, PatIndex('%[' + @invalidChars + ']%', @myString), 1, '')
Return @myString
End