sql比较MS访问中的两个字符串

时间:2009-10-06 10:41:35

标签: sql ms-access

我正在尝试比较一系列字符串,如下所示

rodeo     rodas
carrot    crate
GLX       GLX 1.1
GLX       glxs

比较不必区分大小写 我正在尝试编写一个sql,我在第二个字符串更新第一个字符串,如果他们匹配约。除了第二个字符串之外,所有其他示例都匹配。我想写一个更新字符串的查询,除了第二个字符串。

可以直接在ACCESS

的查询中使用

谢谢

3 个答案:

答案 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中。