zoukankan      html  css  js  c++  java
  • 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 = '';

     

     

  • 相关阅读:
    spring 04-Spring框架依赖注入基本使用
    spring 03-Spring开发框架之控制反转
    spring 02-Maven搭建Spring开发环境
    spring 01-Spring开发框架简介
    JVM堆内存、方法区和栈内存的关系
    jvm 07-java引用类型
    jvm 06-G1收集器
    jvm 05-JVM垃圾收集策略
    jvm 04-JVM堆内存划分
    CSS书写顺序
  • 原文地址:https://www.cnblogs.com/AloneSword/p/2237515.html
Copyright © 2011-2022 走看看