我有一个包含空值的表格。我想将这个表格复制到另一个表格,并将一个列中的空值替换为0。但我的目标表格不接受该列中的空值,这是否可能呢?
insert into MyNewTable (A, B, C) select AA, BB, isnull(CC, 0) from MyOldTable
其中CC可能为空值。
感谢任何帮助。
我有一个包含空值的表格。我想将这个表格复制到另一个表格,并将一个列中的空值替换为0。但我的目标表格不接受该列中的空值,这是否可能呢?
insert into MyNewTable (A, B, C) select AA, BB, isnull(CC, 0) from MyOldTable
其中CC可能为空值。
感谢任何帮助。
ISNULL()
函数。Insert into MyNewTable (A, B, C) select (AA, BB, ISNULL(CC,0)) from MyOldTable
IsNull(a, b)
或Coalesce(a, b, c, ...)
函数,其中IsNull函数在a为null时返回b的值,而Coalesce返回第一个非空参数。IsNull(a, '1')
是可以的,但编写IsNull(a, 'hello')
会导致转换错误,而编写Coalesce(a, 'hello')
是允许的,仅当a为空并且您尝试将返回的值('hello')插入到int列中时才会引发错误,但在将a的值(如果不为空)自动转换为varchar列插入时不会出错。coalesce
函数来实现这个功能:INSERT INTO MyNewTable (A, B, C)
SELECT COALESCE(AA, 0), COALESCE(BB, 0), COALESCE(CC, 0) FROM MyOldTable