Sql 使用正则表达式访问更新查询

Sql 使用正则表达式访问更新查询,sql,regex,ms-access,Sql,Regex,Ms Access,我已经用javascript创建了以下正则表达式来测试字符串是否有效 var str = "Test [abc] =1234= (PG1/2)"; var pattern = /[\[]/; var pattern1 = /[\]]/; var pattern2 = /[=?]/; var pattern3 = /[\(]+[A-z0-9\/]+[\)]/; var result = str.replace(pattern1, "").replace(pattern,"").replace(

我已经用javascript创建了以下正则表达式来测试字符串是否有效

var str = "Test [abc] =1234= (PG1/2)";
var pattern = /[\[]/; 
var pattern1 = /[\]]/; 
var pattern2 = /[=?]/;
var pattern3 = /[\(]+[A-z0-9\/]+[\)]/;
var result = str.replace(pattern1, "").replace(pattern,"").replace(pattern2, "[").replace(pattern2,"]").replace(pattern3,"");
这很好用。但是,我没有尝试转换此SQL(使用ms access示例数据库)

我尝试了以下方法,但由于出现错误而无效

UPDATE Orders
SET Orders.ShipName=replace(replace( Orders.ShipName, "/[\[]/", ''), "/[\]]/",'');
这没用。我想我对SQL的处理方法是错误的。有人能建议正确的方法吗?因为所有替换都需要在Orders.ShipName字段上执行。这可能吗?

Access中的标准函数不支持使用正则表达式进行模式匹配,但您可以很容易地在VBA中“滚动自己的模式”:

选项比较数据库
选项显式
公共函数MyRegexReplace(_
原文作为变体_
regexpatern作为字符串_
将文本替换为字符串)作为变量
'需要VBA项目参考:
'Microsoft VBScript正则表达式5.5
Dim rtn作为变体
Dim objRegExp作为RegExp,objMatch作为Match,colMatches作为MatchCollection
rtn=原始文本
如果不是IsNull(rtn),则
设置objRegExp=newregexp
objRegExp.pattern=regexpatern
Set colMatches=objRegExp.Execute(originalText)
对于colMatches中的每个objMatch
rtn=_
左(rtn,objMatch.FirstIndex)和_
替换文本&_
Mid(rtn,objMatch.FirstIndex+objMatch.length+1)
下一个
Set objMatch=Nothing
Set colMatches=Nothing
设置objRegExp=Nothing
如果结束
MyRegexReplace=rtn
端函数
问题中示例的一些VBA测试代码如下

Private子测试代码()
作为字符串的Dim str
将图案调暗为字符串、图案1为字符串、图案2为字符串、图案3为字符串
将结果变暗为字符串
str=“测试[abc]=1234=(第1页/2页)”
pattern=“[\[]”
pattern1=“[\]”
模式2=“[=?]”
模式3=“[\(]+[A-z0-9\/]+[\])”
结果=str
结果=MyRegexReplace(结果,模式1,“”)
结果=MyRegexReplace(结果,模式,“”)
结果=MyRegexReplace(结果,模式2,“[”)
结果=MyRegexReplace(结果,模式2,“]”)
结果=MyRegexReplace(结果,模式3,“”)
调试。打印结果“测试abc[1234]
端接头
如果需要在查询中执行多个“内联”替换,您仍然可以像以前一样将调用嵌套到函数中:

更新订单
设置ShipName=MyRegexReplace(MyRegexReplace(ShipName,[\]],“”),“[\[]”,“”)
有关Microsoft正则表达式的详细信息,请参阅:


非常感谢我一直在寻求建议,但您似乎得到了很好的、真诚的帮助。我将对此进行测试,并会回复您。非常感谢