我正在努力实现这一目标。
我正在通过经典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)21221222',。。。。。。
如何最好地编写该函数
有更好的主意吗?
没有承诺,但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%'
此外,由于表中的记录很少,您甚至可以检索整个表并在应用程序中进行筛选,而不会注意到性能差异。