我正在使用我在这里和互联网上找到的一个函数来尝试从字段中删除非法字符。
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