我在DB2中有一个RDBMS表,其中列被定义为"ARMTST" VARCHAR(10) NOT NULL DEFAULT
我正在检查表格中的数据并查看此列中没有值的行(通过Toad Viewer
)但是当我运行此查询时,SELECT COUNT ( * ) FROM ACTIVITY WHERE ARMTST IS NULL;
我得到的结果为zero rows
。
附件是SELECT ARMTST FROM ACTIVITY ;
的屏幕截图,显示某些行的空列值。
即使在UI中显示,这些列是否为空? CREATE TABLE
脚本中未指定默认值。
我认为代码无法插入空值。
答案 0 :(得分:1)
空字符串是而不是 null(好吧,除了在甲骨文上,但人们讨厌它)。通常在数据库中,null
用于表示"我们不知道(尚未)",而空是"不存在"。
考虑中间名。美国(和其他国家)的许多人都有中间名(不是你的名字,而不是你的姓) 如果你(随便)问我的姓名,我只回复姓名(可能在我的情况下,或者你可能只得到我的名字!),你对我的中间名有什么了解?没有。你不知道我有没有。这是空的 - 你不知道我是否有一个,如果有的话,它是什么。 但如果你问我"官方" (出于法律原因),我有义务使用我的全名 - 如果我有一个(或更多),我必须包括我的中间名。所以这里有两个结果:
或考虑注册网站。在注册之前,您不在他们的系统中。你的整个记录都是空的 - 它不存在。注册后,您会获得0
个帖子。
<小时/> 所以现在你应该有足够的信息来解决你的问题 显然,因为列被定义为
NOT NULL
,所以你不能在那里放置null。所以系统必须默认为其他东西。由于包含任何数据(包括 space 字符 - 是的,有一个)会导致较差的默认值,系统会选择一个空字符串。由于空字符串是可接受的默认值,因此插入也是可接受的数据值。