5

我正在尝试对我们的数据库进行一些升级维护。我需要从一个表的所有行中移动 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'.
4

1 回答 1

14
SELECT ISNULL(Ro_Community, '')

或者

SELECT COALESCE(Ro_Community, '')

注意:COALESCE自 SQL Server 2005 起受支持。它是 ANSI-92 SQL 标准的一部分,因此许多人认为它优于ISNULL. 然而,也有报告说它有点慢

于 2012-06-01T23:53:05.293 回答