有两张表 不规则名称表(RegMedID,StdMedName,IrrMedName)
标准名称表(MedID,CommonName,MedCode)要实现这样的功能:如果不规则名称表中的IrrMedName字段在标准名称表中的CommonName字段中有对应的记录,则将StdMedName赋值为对应的CommonName。 剩下的IrrMedName在StdMedName找不到对应记录的,根据两字段中字符串的相似度来匹配,如果相似度达到某一个值,也将StdMedName赋值为对应的CommonName。请问用数据库如何实现,有什么具体的思路吗?当然如果用其他编程语言也可以。请各位大侠帮忙!(如果要数据库的话我可以发您邮箱)
标准名称表(MedID,CommonName,MedCode)要实现这样的功能:如果不规则名称表中的IrrMedName字段在标准名称表中的CommonName字段中有对应的记录,则将StdMedName赋值为对应的CommonName。 剩下的IrrMedName在StdMedName找不到对应记录的,根据两字段中字符串的相似度来匹配,如果相似度达到某一个值,也将StdMedName赋值为对应的CommonName。请问用数据库如何实现,有什么具体的思路吗?当然如果用其他编程语言也可以。请各位大侠帮忙!(如果要数据库的话我可以发您邮箱)
difference(字符串表达式 1,字符串表达式 2)
select difference('Green','Greene')返回 4
返回一个0 到 4 的整数值,指示两个字符表达式的之间的相似程度。
0 表示几乎不同或完全不同,
4 表示几乎相同或完全相同。
注意相似并不代表相等
--difference函数可以用来看两个字符的匹配度
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
difference这个函数不能满足要求。
如select difference('阿莫西林','克拉维酸钾')as result 返回值为4,但明显这两个是不同的药物。