我正在尝试比较一系列字符串,如下所示
rodeo rodas
carrot crate
GLX GLX 1.1
GLX glxs
比较不必区分大小写 我正在尝试编写一个sql,我在第二个字符串更新第一个字符串,如果他们匹配约。除了第二个字符串之外,所有其他示例都匹配。我想写一个更新字符串的查询,除了第二个字符串。
可以直接在ACCESS
的查询中使用谢谢
答案 0 :(得分:2)
除了使用LIKE之外,这不可能直接在MS Access中的查询中使用。您需要为近似匹配实现某种Levenshtein Distance函数。
答案 1 :(得分:1)
您无法直接在Access中测量两个字符串的距离。您必须实现一个计算距离的合适度量标准 - 有许多不同的计算方法。
编辑:您可能希望观看this Wikipedia entry,其中描述了非常好的可能性。 Mitch推荐的 Levenshtein距离是解决这个问题的一个非常好的简单解决方案。
答案 2 :(得分:1)
您要做的事情称为模糊匹配,代码非常复杂 - 请参考http://search.cpan.org/dist/String-Approx/Approx.pm
我尝试使用SQL和VBA函数的组合来放弃,因为有很多例外。我最终想出的最好成绩如下:
(1)使用草莓perl使用win32 perl模块连接到ms-access数据库;
(2)从perl中获取sql查询以获取两个连接字符串;
(3)使用perl的String :: Approx模块进行模糊字符串比较 - 对于完美匹配,返回1,对于不完美匹配,返回小于1的递减数字。
(4)通过sql查询将模糊匹配号重新附加到ms-access中。