Access 错了,还是我傻了

最近系统运行中发现Access 2003 版本中对待 Null ‘’ (空字符)奇怪问题,重现步骤:

1、创建表tabTest

2、使用设计视图添加两个字段 ID col1

名称

类型

长度

说明

ID

Number

主键,自增

Col1

char

1

3、使用sql 添加如下数据

-- col1 字段设置为 null

INSERT INTO tabtest (id, col1) VALUES(1, NULL);

-- col1 字段设置为 ‘’

INSERT INTO tabtest (id, col1) VALUES(2, '');

-- col1 字段设置为 ‘a’

INSERT INTO tabtest (id, col1) VALUES(3, 'a');

4、重新建立查询请求,通过 sql 添加新字段 col2

-- 添加新列col2

ALTER TABLE tabTest ADD COLUMN col2 CHAR(1);

5、使用如下sql 再次向 tabTest 添加新数据

-- col1col2 字段设置为 null

INSERT INTO tabtest(id, col1, col2) VALUES(4, NULL, NULL);

-- col1col2 字段设置为 ‘’

INSERT INTO tabtest(id, col1, col2) VALUES(5, '', '');

-- col1col2 字段设置为 ‘a’

INSERT INTO tabtest(id, col1, col2) VALUES(6, 'a', 'a');

6、打开 tabTest 检查 Id 5 的数据。神奇的事情发生了。

col1 字段为 长度为0 的空字符串,而 col2 为长度为1 的字符

问题:

Q1、为何 ID 2 col1 字段 col2 字段都是长度为 0 的空字符,

ID 5 col1 字段 col2 字段长度分别为 0, 1 的空字符,

运行如下sql 得到如下结果:

SELECT id, len(col1) AS col1_长度, len(col2) AS col2_长度

FROM tabtest

WHERE id IN (2, 5);

Q2、通过如下sql 却能得到ID 5 的记录

SELECT *

FROM tabtest

WHERE col1 = ''

AND col2 = '';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值