插入并将null转换为0

时间:2011-02-11 12:42:20

标签: sql sql-server-2005

我的表中包含空值。我想将此表复制到另一个表并将一个列中的空值替换为例如0.是否可能导致我的目标表不接受此列中的空值

Insert into MyNewTable (A, B, C) select (AA, BB, CC) from MyOldTable

CC可能为空

感谢您的帮助

3 个答案:

答案 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