我正在尝试对我们的数据库执行一些升级维护。我需要从一个表的所有行移动3列数据,并将该数据作为新行插入新表中。
INSERT INTO [dbo].[SnmpSettings]([NetworkDiscoveryId], [RoCommunities], [RwCommunities])
SELECT id, Ro_Community, RW_Communities
FROM [dbo].[Network_Discovery]
上面的代码可以正常工作,但Ro_Community和RW_Communities允许NULL,因为RoCommunities和RwCommunities不允许NULL。我应该如何将NULL转换为空字符串,然后插入到我的新表中?
编辑:
INSERT INTO [dbo].[SnmpSettings]([NetworkDiscoveryId], [RoCommunities], [RwCommunities])
SELECT id, Ro_Community, RW_Communities
ISNULL(Ro_Community,'')
FROM [dbo].[Network_Discovery]
Msg 102, Level 15, State 1, Line 27
Incorrect syntax near 'Ro_Community'.
答案 0 :(得分:10)
SELECT ISNULL(Ro_Community, '')
或
SELECT COALESCE(Ro_Community, '')
注意:自SQL Server 2005以来支持COALESCE
。它是ANSI-92 SQL标准的一部分,因此许多人认为它比ISNULL
更受欢迎。但是也有报道称它是a bit slower。