我正在努力实现这一目标。
我正在通过经典ASP网站从msAccess2000数据库中搜索电话号码。
相同的电话号码可以作为以下之一存储在数据库中。
(212) 212-2122
212)2122122
2122122122
212-212-2122
212-2122122
还有很多其他组合,你明白了。
理想情况下,我会做类似
的事情strWhere ="Where replace(replace(Phone,'(',''),'-','') = '" & replace(replace(strPhone,"(",""),"-","") & "'"
但MS ACCESS不允许(至少我的版本)远程调用替换功能。
这让我有一个我能想到的选择,创建一个迭代所有替换组合的函数并将其添加到查询中,如下所示:
strWhere ="Where Phone in (" & PhoneReplace(strPhone) & ");"
该函数应生成一个包含此格式的所有组合的字符串。 '2122122122', '(2122122122', '(212)2122122',......
如何最好地编写该功能?
有更好的主意吗?
答案 0 :(得分:0)
没有承诺,但是Bing-Fu让我这样将Replace
功能添加到您的查询中(来自tech-archive.net)
创建一个新模块:
Function ReplaceText(StringIn as String) as String
Dim NewString as String
NewString = Replace(StringIn,"xyz","abc")
ReplaceText = NewString
End function
从查询中调用它:
ChangedText:ReplaceText([FieldName])
另一种选择是使用LIKE
并在任何地方放置通配符 - 这将允许任何格式进入,并假设您的值始终包含10个数字,并且搜索条件包含10个数字,它只会找到有效匹配。
where Phone like '%2%1%2%2%1%2%2%1%2%2%'
此外,由于您的表中记录太少,您甚至可以检索整个表并在应用程序中进行过滤,甚至不会注意到性能差异。