access数据库中如何检索近似度最高的记录
用SQL语句能实现吗
比如 我要检索 1234
数据库记录字段 mc
1235
1265
3213
3215
1233
如何让记录按近似度降序排列
计算方法:
1234 和3235 第2个和第3个相同, 结果为2
1234 和1233 前三个相同  结果为3
sql能实现吗

解决方案 »

  1.   

    很难直接实现。你可以通过查询 4 个字符相同以及采用 Like 操作符的 3 个字符相同、2 个字符相同和 1 个字符相同的多个 SQL 语句去实现。
      

  2.   

    如果你的表中有相似度字段的话:// 根据当前 Pattern 更新相似度
    Update yourtable Set Similarity = 0
    Update yourtable Set Similarity = 4 Where mc = '1234'
    Update yourtable Set Similarity = 3 Where ((mc Like '123?') Or (mc Like '12?4') Or (mc Like '1?34') Or (mc Like '?234')) And Similarity = 0 
    Update yourtable Set Similarity = 2 Where ((mc Like '12??') Or (mc Like '1??4') Or (mc Like '??34') Or (mc Like '?23?') Or (mc Like '?2?4') Or (mc Like '1?3?'))  And Similarity = 0
    Update yourtable Set Similarity = 1 Where ((mc Like '1???') Or (mc Like '?2??') Or (mc Like '??3?') Or (mc Like '???4')) And Similarity = 0 // 按相似度查询
    SELECT * FROM yourtable ORDER BY Similarity, mc
      

  3.   

    应该可以这样:
    sql="
    SELECT 表1.*
    FROM 表1
    WHERE ((([mc]-1234)=(select min(mc-1234) From 表1)));
    "
      

  4.   

    有点问题,应该是这样SELECT 表1.*
    FROM 表1
    WHERE (((Abs([baseB]-7000))=(select min(abs(BaseB-7000)) From 表1)));
      

  5.   

    按照你的表是:
    SELECT 表1.*
    FROM 表1
    WHERE (((Abs([mc]-1234))=(select min(abs(mc-1234)) From 表1)));