Windows x64上为什么DB2将空字符串视为null?
UPDATE dbo.datasource_databases
SET HOST = ''
WHERE ID = 1
Assignment of a NULL value to a NOT NULL column "TBSPACEID=2, TABLEID=6, COLNO=1" is not allowed.. SQLCODE=-407, SQLSTATE=23502, DRIVER=3.67.28
HOST使用DB2 10.5是一个VARCHAR(512)NOT NULL
这是预期的行为?如果是这样,我该如何解决这个问题,如果没有,可能会导致这种情况?
编辑:沿着同样的路线,SELECT ID, HOST from dbo.datasource_databases WHERE HOST != ''
返回0行,其中检查HOST != 'some gibberish'
将返回行。对我来说,这比上面的行为更没有意义(不应该把它当作HOST NOT NULL
?)。
IIRC(我还没有去检查[DB2 10.5手册](http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.kc。 doc/welcome.html)),它是“因为它确实”(并且可能SQL标准允许这样做),解决方法是存储空间''''而不是空字符串''''。 – 2015-03-02 23:56:39