我的表中包含空值。我想将此表复制到另一个表并将一个列中的空值替换为例如0.是否可能导致我的目标表不接受此列中的空值
Insert into MyNewTable (A, B, C) select (AA, BB, CC) from MyOldTable
CC可能为空
感谢您的帮助
答案 0 :(得分:6)
只需使用ISNULL()
Insert into MyNewTable (A, B, C) select (AA, BB, ISNULL(CC,0)) from MyOldTable
答案 1 :(得分:5)
您可以使用IsNull(a, b)
或Coalesce(a, b, c, ...)
函数,其中如果“a”为null,则IsNull返回值“b”,Coalesce返回第一个非null参数。
一个重要的区别是IsNull()强制将“b”的转换(或转换)强制转换为“a”的类型,而Coalesce的返回类型与返回的参数相同,让引擎仅在评估后尝试任何转换功能。
即。如果列“a”属于int
数据类型,则编写IsNull(a, '1')
即可,但IsNull(a, 'hello')
会导致转换错误,同时允许编写Coalesce(a, 'hello')
,并且会出错仅当a
为null并且您尝试将返回的值('hello')插入int
列时才会被引发,但是会对a
的值进行自动转换(如果不为null)插入varchar列时。
答案 2 :(得分:1)
您可以使用coalesce
功能:
INSERT INTO MyNewTable (A, B, C)
SELECT COALESCE(AA, 0), COALESCE(BB, 0), COALESCE(CC, 0) FROM MyOldTable