有一个表,就一个
 id  word 
1     India
2     grass
    
........
现在有一个单词如glass,如何查找出与glass相似的单词,我的想法是,比较各单词的字母相同的个数,比如说glass有4个字母与grass所以就要找出grass,请高手看能否用sql语句实现,谢谢!

解决方案 »

  1.   


    access里面的全文索引怎么做??学习一下 谢谢
      

  2.   

    select word from .. where 'grass' in word
      

  3.   


    ---msql 可以用 like
     .. where  字段 like 'gras%'
      

  4.   

    参考:匹配发音    Microsoft SQL 有两个允许你按照发音来匹配字符串的函数。函数SOUNDEX()给一个字符串分配一个音标码,函数
    DIFFERENCE()按照发音比较两个字符串。当你不知道一个名字的确切拼写,但多少知道一点它的发音时,使用这
    两个函数将有助于你取出该记录。例如,如果你建立一个Internet目录,你也许想增加一个选项,允许访问者按照站点名的发音来搜索站点,而不是
    按名字的拼写。考虑如下的语句:SELECT site_name FROM site_directory WHERE DIFFERENCE(site_name , ‘Microsoft’>3这个语句使用函数DEFFERENCE()来取得其名字的发音与Microsoft非常相似的站点。函数DIFFERENCE()返回一个
    0到4之间的数字。如果该函数返回4,表示发音非常相近;如果该函数返回0,说明这两个字符串的发音相差很大。例如,上面的语句将返回站点名Microsoft和Macrosoft。这两个名字的发音与Microsoft都很相似。如果你把上一语
    句中的大于3改为大于2,那么名为Zicrosoft和Megasoft的站点也将被返回。最后,如果你只需要差别等级大于1即
    可,则名为Picosoft和Minisoft的站点也将被匹配。要深入了解函数DIFFERENCE()是如何工作的,你可以用函数SOUNDEX()来返回函数DIFFERENCE()所使用的音标
    码。这里有一个例子:SELECT site_name ‘site name’,SOUNDEX(site_name) ‘sounds like’这个语句选取字段site_name的所有数据及其音标码。下面是这个查询的结果:site name sounds like---------------------Yahoo Y000Mahoo M000Microsoft M262Macrosoft M262Minisoft M521Microshoft M262Zicrosoft Z262Zaposoft Z121Millisoft M421Nanosoft N521Megasoft M221Picosoft P221(12 row(s) affected)如果你仔细看一下音标码,你会注意到音标码的第一个字母与字段值的第一个字母相同。例如,Yahoo和Mahoo的
    音标码只有第一个字母不同。你还可以发现Microsoft和Macrosoft的音标码完全相同。函数DIFFERENDE()比较两个字符串的第一个字母和所有的辅音字母。该函数忽略任何元音字母(包括y),除非
    一个元音字母是一个字符串的第一个字母。不幸的是,使用SOUNDEX()和DIFFERENCE()有一个欠缺。WHERE子句中包含这两个函数的查询执行起来效果不好。
    因此,你应该小心使用这两个函数。
      

  5.   

    將WORD字段逐一拆分
    然後按照相同規則排序重組
    然後再模糊匹配~~
      

  6.   


    每一个单词都可以变换成  a1d1i2n1 这样的类型
    如上表变成
    1   india   a1d1i2n1
    2   grass   a1g1r1s2
    然后再去判断。
    具体算法思路,建议参考《编程珠玑Ⅱ》里,有关这个算法的介绍,
    网上应该有的下电子书...
      

  7.   

    用like吧,先處理一遍,把範圍縮小些