通过vb6将word文本(wordApp.ActiveDocument.Range().text,选择题答案,比如A)导入sql一表中,另一表手工录入学生答案(比如A),将两者字符进行比较判断答案正误并获得相应分值时,出现无法解决的问题:个别题目两者答案相同,可以判断出正确,并显示得分。个别题目虽然两表答案一致,但两者比较结果却不正确。不知道原因是什么,应如何解决?
注:两表答案字段类型都是varchar。
a表(此表da字段中字符由word导入)
id da fs
1 A 2
2 B 2
3 C 2
b表
xh tmid da
1 1 A
1 2 B
1 3 C
select b.xh as xh,tmid as tmid,(case when b.da=a.da then a.fs else 0 end) as df from
b left join a on b.tmid=a.id
查询结果
xh tmid df
1 1 2
1 2 0
1 3 2
第2题两表答案字符相同,但对比结果却不正确,数据已检查过没有空格,其实在导入时已筛除空格符。奇怪的是,a表中第2题的字符我用键盘重新录入便可以正确比较了,何解?会不会是word的字符有问题?
------解决思路----------------------
1、是否有其他不可见字符?
2、是否是倒角的字母B?
将a表查询结果保存到TXT文件中,用UE查看十六进制内容,看看是否包括其他内容。
------解决思路----------------------
不知道是不是字符编码的问题,如果确认无误没有空格了
根据以下语句,把那个觉得有问题的 字母,用以下方式查一下编码
SELECT UNICODE(N'A')
------解决思路----------------------
看到的不一定是真实的,我的意思就是存储空格等非可见字符,需要预处理一下.
------解决思路----------------------
.Range().text.Trim();
不知道这样可行不
------解决思路----------------------
试一试:
把从WORD中读出来的内容一个字母一个字母的判断,da这一列对应的内容,只要英文字母,其他的都不要。这样处理完后再保存到数据库中。
------解决思路----------------------
不正确的行找出来,先用datalength比较看长度是否一致,如果不一致说明有特殊字符被导入;如果一致逐字对比ASCII码
------解决思路----------------------
word很容易插个回车换行之类的东西,trim不一定消的了