.net(vb) 查询的算法

来源:百度知道 编辑:UC知道 时间:2024/06/28 23:51:57
1.两个字符串“abcd”“acdef”。怎么样返回两个字符串的相同的字母的字符串。
2. 我有一个字符串例如“abcd”.数据库甲表里有一个字段data.里面有若干条数据,例如其中一条是“acdef”,还有很多类似的.怎么样能分别查询出,
完全相同的记录,有3个字符相同的记录,有2个字符相同的记录,有1个字符相同的记录,有0个字符相同的记录。
3.数据库甲表里有一个字段data.里面有若干条数据,例如其中一条是“acdef”,还有很多类似的.怎么样能分别统计出,完全相同的记录,有3个字符相同的记录,有2个字符相同的记录,有1个字符相同的记录,有0个字符相同的记录。
谢谢。希望用最简单的算法。
我的表述不太好。这么说吧。表里有一个字段(名为data)。这个字段的数据完全都是6位字母组成的,并且,这6位字母是按照a到z的顺序排好的,且不重复。例如:有5条记录
1 abcdef
2 cefgmn
3 efgkmn
4 bgijk
5 ikopqr
就相当于26个字母里排列组合选出6个字母。
那么,我需要统计出表里这个字段的数据,目前。6个字符完全相同的记录没有,有5个字符相同的记录有2个(2,3),等等等等。
另外,我还需要,在程序里输入一个6位字符串如:“abefgk”.那么就要查询出在表里与之6个字符完全相同的记录有没有,有5个字符相同的记录有没有,等等等等。

我觉得你应该修改数据库的表结构。
1.如果字符完全是数字和字母,在数据库中再增加一列用于存储有序字符串,比如“hbcdef”,存储到新列为bcdefh
2.而在查询的时候,就用
like 'abcd' 完全匹配
like 'abc%' 匹配3个
like '%bcd'
like 'ab%' 匹配2个
like '%bc%'
like '%cd%'
……
注意匹配2个中包含匹配3个的,需要除去
即:非连续字母间用通配符表示。如ahc,则like 'a%c%h%'
3.也可以先把有序字段的所有数据查询出来,然后在datatable中用正则表达式对有序字符串进行比较,这样就可以把所有记录筛选为你所要求的不同程度的匹配记录
4.如果是汉字或者英语单词的话,你得考虑分词了

模糊查询用like
精确查询用等号(=)

表1
字段1 字段2 字段3 字段4
abcd ... ... ...
abcdef ... ... ...
abc ... ... ...
abcde ... ... ...

假设你的数据表如上
1 模糊查询,查询字符串如下(找出表1中 字段1包含 abc 的全部记录)
"select * from 表1 where 字段1 like '%abc%'"
结果:4条
2.精确查询,查询字符串如下(找出表1中 字段值为abc的全部记录)
"select * from 表1 where 字段1='abc'"
结果:1条

不知道你要在SQL里面实现还是要在代码里面实现。
给你个例子参考,希望对你有帮助!
#includ