有两张表 不规则名称表(RegMedID,StdMedName,IrrMedName)
         标准名称表(MedID,CommonName,MedCode)要实现这样的功能:如果不规则名称表中的IrrMedName字段在标准名称表中的CommonName字段中有对应的记录,则将StdMedName赋值为对应的CommonName。 剩下的IrrMedName在StdMedName找不到对应记录的,根据两字段中字符串的相似度来匹配,如果相似度达到某一个值,也将StdMedName赋值为对应的CommonName。请问用数据库如何实现,有什么具体的思路吗?当然如果用其他编程语言也可以。请各位大侠帮忙!(如果要数据库的话我可以发您邮箱)

解决方案 »

  1.   


    difference(字符串表达式 1,字符串表达式 2)
    select difference('Green','Greene')返回 4
    返回一个0 到 4 的整数值,指示两个字符表达式的之间的相似程度。
    0 表示几乎不同或完全不同,
    4 表示几乎相同或完全相同。
    注意相似并不代表相等
    --difference函数可以用来看两个字符的匹配度
      

  2.   

    测试数据表药品不规则名称表 
    RegMedID   StdMedName  IrrMedName
    1    NULL        阿米卡星 
    2    NULL        阿司匹林 
    3    NULL        普鲁卡因 
    4    NULL        青霉素G 
    5    NULL        注射用青霉素V钾 
    6    NULL        氯唑西林钠 
    7    NULL        氯唑西林 
    8    NULL        阿咖酚胶囊 
    9    NULL        阿卡米星 
          药品标准名称表
    MedID   CommonName         MedCode
    1 青霉素G    40010101
    2 青霉素V钾     40010101
    3 普鲁卡因青霉素    40010101
    4 苄星青霉素    40010101
    5 氯唑西林    40010101
    6 氨苄西林-氯唑西林    40010103
    7 苯唑西林    40010101
    8 哌拉西林        40010101
    9 阿米卡星    4001010510
      

  3.   


    difference这个函数不能满足要求。
    如select difference('阿莫西林','克拉维酸钾')as result 返回值为4,但明显这两个是不同的药物。