使用sql语句能实现access数据检索字段的近似度精确顺序吗
access数据库中如何检索近似度最高的记录用SQL语句能实现吗
比如 我要检索 1234
数据库记录字段 mc
1235
1265
3213
3215
1233
如何让记录按近似度降序排列
计算方法:
1234 和3235 第2个和第3个相同, 结果为2
1234 和1233 前三个相同 结果为3
sql能实现吗 --------------------编程问答-------------------- 很难直接实现。
你可以通过查询 4 个字符相同以及采用 Like 操作符的 3 个字符相同、2 个字符相同和 1 个字符相同的多个 SQL 语句去实现。
--------------------编程问答-------------------- 如果你的表中有相似度字段的话:
// 根据当前 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 --------------------编程问答-------------------- 应该可以这样:
sql="
SELECT 表1.*
FROM 表1
WHERE ((([mc]-1234)=(select min(mc-1234) From 表1)));
" --------------------编程问答-------------------- 有点问题,应该是这样
SELECT 表1.*
FROM 表1
WHERE (((Abs([baseB]-7000))=(select min(abs(BaseB-7000)) From 表1)));
--------------------编程问答-------------------- 按照你的表是:
SELECT 表1.*
FROM 表1
WHERE (((Abs([mc]-1234))=(select min(abs(mc-1234)) From 表1)));
补充:VB , 数据库(包含打印,安装,报表)