Sql 插入并将null转换为0
我得到了一个包含空值的表。我想将此表复制到另一个表,并将空值从一列替换为例如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
插入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