SQL - 将NULL转换为空字符串。

6

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

2
如果是 Sql Server,请使用 isnull(Ro_Community, '')。 - Nikola Markovinović
非常抱歉,我在这个工作领域非常幼稚。我已经按照您的指示进行了编辑,但它无法编译。 - Sean Anderson
SELECT id, isnull(Ro_Community, ''), isnull(RW_Communities, '') - Nikola Markovinović
1个回答

16
SELECT ISNULL(Ro_Community, '')
或者
SELECT COALESCE(Ro_Community, '')

注意:COALESCE自SQL Server 2005开始受支持。它是ANSI-92 SQL标准的一部分,因此许多人认为它比ISNULL更受推荐。然而也有报告称它稍微慢一些


ISNULL 对我来说速度更快。 - Tot Zam
@TotZam 这就是我说的,据说 COALESCE 的速度较慢。 - bfavaretto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接