我很想知道如何将NULL存储到数据库中?
它肯定取决于数据库服务器,但我想对它有一个大致的想法.
第一次尝试:
假设服务器将未定义的值(可能是任何值)放入字段中以获取NULL值.
你能非常幸运并用它来检索NULL值吗?
...WHERE field = 'the undefined value (remember, could be anything...)'
第二次尝试:
服务器是否有某个标志或任何元数据表明此字段为NULL?
然后,服务器必须读取此元数据以验证该字段.
如果元数据指示NULL值,并且查询没有"field IS NULL",则忽略该记录.
看起来太容易了......
MySql使用第二种方法.它存储一个位数组(每列一个),每行包含数据,以指示哪些列为空,然后将该字段的数据留空.我很确定这对所有其他数据库也是如此.
第一种方法的问题是,您确定为数据选择的任何值都不会显示为有效数据吗?对于某些值(如日期或浮点数),这是真的.对于其他人(如整数),这是错误的.