Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 插入并将null转换为0_Sql_Sql Server 2005 - Fatal编程技术网

Sql 插入并将null转换为0

Sql 插入并将null转换为0,sql,sql-server-2005,Sql,Sql Server 2005,我得到了一个包含空值的表。我想将此表复制到另一个表,并将空值从一列替换为例如0。是否可能是因为我的目标表不接受此列中的空值 插入MyNewTable(A、B、C)从MyOldTable中选择(AA、BB、CC) 而CC可能是空的 感谢您的帮助只需使用ISNULL() 您可以使用合并功能: INSERT INTO MyNewTable (A, B, C) SELECT COALESCE(AA, 0), COALESCE(BB, 0), COALESCE(CC, 0) FROM MyOldTable

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

插入MyNewTable(A、B、C)从MyOldTable中选择(AA、BB、CC)

而CC可能是空的

感谢您的帮助

只需使用
ISNULL()


您可以使用
合并
功能:

INSERT INTO MyNewTable (A, B, C)
SELECT COALESCE(AA, 0), COALESCE(BB, 0), COALESCE(CC, 0) FROM MyOldTable

您可以同时使用
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
列,但在插入varchar列时对
a
的值进行自动转换(如果不是null)。

Bye?你这么快就要走了?我们的评论/答案呢?@BoltClock-周末刚开始玩得开心。。。哈哈……:)太棒了,我只是想看看这两个之间的区别,但你帮了我的忙。@Stuart:总是很乐意帮忙。谢谢你的语法更正。我知道我的英语不是很好。(AA、BB、CC)是SQL Server无法识别的三元组
INSERT INTO MyNewTable (A, B, C)
SELECT COALESCE(AA, 0), COALESCE(BB, 0), COALESCE(CC, 0) FROM MyOldTable