如果在INSERT上使用VALUES子句,则不必强制转换NULL值:
insert into T_AUTHOR ( ID, FIRST_NAME, LAST_NAME, DATE_OF_BIRTH, YEAR_OF_BIRTH, ADDRESS) VALUES ( 1000, 'Lukas', 'Eder', '1981-07-10', null, null );
这将按您期望的方式工作(即数据库可以确定NULL对应于整数和varchar(500)。这在DB2和Derby中都可以工作(并且在几乎所有其他数据库引擎中也应工作)。
您也可以将VALUES与参数标记一起使用,而无需CAST它们。
发出
insert into ... select from语句时必须强制转换的原因是SELECT部分优先-
select语句返回某些数据类型,无论它们是否与您要插入它们的表兼容。如果它们不兼容,您将得到一个错误(使用DB2 <=
9.5之类的强类型数据库引擎),或者该引擎将进行隐式类型转换(如果可能)。



