Access 2003 中 null 和 '' 空字符串的奇怪问题

最近系统运行中发现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 的字符

 

Access 2003 中 null 和 '' 空字符串的奇怪问题_第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 = '';

 

 

 

 

你可能感兴趣的:(Access 2003 中 null 和 '' 空字符串的奇怪问题)