五千年(敝帚自珍)

主题:【求助】有access的高手帮忙看看。 -- flycloud

共:💬15 🌺1
分页树展主题 · 全看首页 上页
/ 1
下页 末页
  • 家园 【求助】有access的高手帮忙看看。

    我有一个表的字段是文本类型,数据是固定位数13位的格式,我现在想通过输入一个数据查找出和其包含内容最少有10位相同的记录,应该如何查询呢?

    • 家园 这个比较复杂,只能简单提供一点思路

      看您下面的例子,您说的这个似乎是"Pattern Matching",且让我复述一下,看看有没有误解:

      输入一个字符串,含若干(>10)个单位(Unit) ,这个单位的组成,可能是单个字符,也可能是个词组。

      对比一个表里的某个文本域,(A table's text field),如果这个域含有十个或以上的输入的单位,返回这个纪录。

      如果是这样的话,恐怕光靠Single SQL statement不能胜任,要写脚本(Access VBA script)逐个数据来处理,关键之处在于自己要写一个字符对比的Function。

      既然用Access,估计数据量不会很大,对这个Function的效率要求或许不高,应该不会那么难的。

    • 家园 【原创】使用VBA的字典功能比较两个字符串有几个相同的字符

      我问题简单化了一点,重复的字符也算在内。

      首先要让你的VBA具有字典功能,要在VBA中的菜单工具-引用中选择Microsoft scrpting runtime:

      点看全图

      然后写一个小函数,分别为两个字符串建立字典,最后比较两个字典中有几个相同的字符,在下面那个立即窗口中可以测试结果:

      点看全图

      当测试完成之后,可以把函数中的最后一句debug.print compString注释掉,然后就可以到你的access中调用这个函数来比较字符串了。

    • 家园 建议:用VBA的字典功能

      建立一个字符串比较函数,其中用到字典对象,就容易比较出两个字符串有多少个相同的字符了。

      • 家园 感谢回复,瓦斯给个例子说说,可别被我烦到爆炸啊,;-)
        • 家园 一般数组用连续的整数为下标,字典的好处是可以用字符作下标

          例如,你可以定义一个字符串数组dim mystr(5) as string就会得到下标从0到5的字符串数组:mystr(0)、mystr(1)、mystr(2)、mystr(3)、mystr(4)和mystr(5)。下标只能是数字的。

          而使用字典,你可以把下标变成字符的,例如mystr("a")、mystr("x")、mystr("3")......

          不过,对于你的问题,我想还要问一下,是否在你的字符串中有重复的字符?如果有的话,两个字符串比较的时候,重复的字符如何对待?

          如果没有重复字符,问题就会简单很多,只要看两边的字典中,有几个相同的字符,用字功能典就很容易了,比字符下标要方便容易很多。

    • 家园 不是高手的问一下:你这十位相同是连续的还视不连续的?

      比如0123456789abc对123456789cdef是否满足?

分页树展主题 · 全看首页 上页
/ 1
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河