跳到正文
IGCSE·Tuition
资讯与通信科技(ICT) · 课程

发现数字与文本的错误解读

一列数字可能排出奇怪的顺序,或者拒绝求和,而原因往往就是字段类型。

本页内容
  1. 有哪些症状?
  2. 例题详解
  3. 要留意的错误
  4. 自我检测
  5. 下一步

数字与文本的混淆,是指数据库把数量存成文本,或把标签存成数字。屏幕上的值看起来一样,但排序、总和和搜索的表现却不同。考试要求你能察觉症状、说出原因并指出修正方法。

本课接在导入一份小型虚构数据集之后,因为混淆通常就是在导入时产生的。它属于数据库结构与验证。

有哪些症状?

三个快速测试可以显示一列数据是如何存放的。

  1. 排序测试。 把该列升序排序。数字字段会排成 5、9、12、120。文本字段会排成 12、120、5、9,因为它逐个字符比较。
  2. 求和测试。 要求求和或求平均。文本列会返回零、报错,或根本没有这个选项。
  3. 零测试。 查看邮编之类的标签。如果 08000 显示为 8000,说明标签被存成了数字,开头的零已经丢失。

日期也有同样的麻烦。写成 10-03-2024 并存为文本的日期,会按前面的字符排序,而不是按日历排序。

例题详解

一张虚构的库存数量表已被导入。数量是 25、9、120 和 12。

第一步,做排序测试。 升序结果为:12、120、25、9。

第二步,与预期顺序对比。 当作数字时,顺序应是 9、12、25、120。排出来的结果不同,所以有问题。

第三步,解释这个规律。 文本先比较第一个字符。第一个字符分别是 1、1、2 和 9。12 和 120 都以 1 开头,所以排在前面。这两者之间,12 较短,排在 120 之前。接着 25 以 2 开头,9 以 9 开头。12、120、25、9 正是文本排序的结果。

第四步,确认原因。 Quantity 字段的类型是文本。

第五步,修正。 把字段类型改为整数。如果程序询问,确认转换。再排序一次:9、12、25、120。

第六步,用总和核对。 25 + 9 + 120 + 12 = 166。按两两配对验算:25 + 9 = 34,120 + 12 = 132,34 + 132 = 166。现在这个字段可以正确求和了。

要留意的错误

常见的失误是想”修复”文本列,就把所有只含数字的字段都改成数字,连电话号码也不例外。

错误的修复: 为了让它按数值排序,把 Phone 字段改成了整数。以零开头的电话号码变短,那个零不见了。

这个值已经和真实号码不符。很少需要按电话号码排序,所以这次转换解决了一个没人遇到的问题,却制造了一个真实的问题。

改正的方法是先问这一列是做什么用的。如果值要被相加、求平均或当作数额比较,就转换。如果它们是用来识别事物的,就保持文本。如果开头的零已经丢失,就用文本类型重新从源文件导入,找回原来的值。

自我检测

1. 一个文本列含有 7、70 和 8。写出数据库显示的升序结果。

查看答案

7、70、8。 文本比较第一个字符:7、7 和 8。两个以 7 开头的值中,较短的 7 排在前面,然后是 70。

2. 用户对 Price 列求和,程序却给出 0,而价格是 5.50、3.00 和 2.50。可能的原因是什么?修正后的总和是多少?

查看答案

价格被存成了文本,所以无法求和。改成货币或小数后,总和是 5.50 + 3.00 + 2.50 = 11.00。

3. 邮编字段显示 8000,而源文件是 08000。哪里出了问题?怎样修正?

查看答案

邮编被存成了数字,开头的零被去掉了。把字段设为文本,再从源文件重新导入。

下一步

接下来,了解重复的行为什么会破坏计数和总和:解释重复记录为什么重要。如果字段类型需要复习,请回到根据样本数据选择字段类型。然后试做数据库结构与验证练习题组。错题记录与重测队列是记录每一次类型错误的好地方。

这种混淆被点出来之后很容易看见,之前却很难察觉。ICT 线上一对一补习的老师可以和你一起建立快速测试,让你在任何表格上都能找出原因。

常见问题

为什么文本会把 100 排在 25 前面?

文本是从左边起逐个字符排序的。100 的第一个字符是 1,排在 25 的 2 之前,所以 100 在前。数字字段比较的是整个数值,因此 25 排在 100 前面。顺序不对是数字被存成文本的线索。

怎样知道某一列是不是以文本存放?

看对齐方式,试着排序,再试着求和。许多程序默认把文本靠左、数字靠右。按数值排序会把 9 排在 12 前面,而文本列求和会得到零或报错。最后一定要到字段类型设置中确认。

应该把所有由数字组成的列都改成数字吗?

不应该。只转换会被当作数量来计算或比较的值。编号、电话号码和邮编要保持为文本,因为转换可能丢掉开头的零,改变值的意思。

更新于:

下一步

如果排序或总和看起来不对,又说不出原因,一对一的老师可以陪你逐个分析症状,教你哪种测试最快找出原因。

一小时付费试听课,按所安排老师确认的收费,RM80 起。 其他费用、时间安排及后续课程,在试听课后由家长与老师直接确认。

补习由家长或监护人安排。用 WhatsApp 把这页发给他们,他们就可以替你咨询。

是家长或监护人?在这里咨询

已通过我们的服务帮助 9,000+ 名学生