0

我正在努力做到这一点。

我正在通过经典 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',......

如何最好地编写该函数?

有更好的主意吗?

4

1 回答 1

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%'

此外,由于表中的记录如此之少,您甚至可以检索整个表并在应用程序中进行过滤,甚至不会注意到性能差异。

于 2013-07-03T23:14:24.013 回答