我正在使用我在此处找到的功能,而在互联网上尝试从字段中删除非法字符。
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
答案 0 :(得分:0)
与LIKE
一样,如果您要指定其中一个 set 字符应匹配,请使用[]
将该字符集括起来。
SELECT epacube.StripSpecs (
DATA_NAME
,'%[$)]%') FROM TABLE_DATA
虽然,就个人而言,考虑到功能和参数的描述,我会在%[
中添加]%
和StripSpecs
,然后让来电者给出一个字符列表(如果您不想支持指定的任何其他类型的模式)