2012-06-01 4 views
1

데이터베이스에서 일부 업그레이드 유지 관리를 수행하려고합니다. 한 테이블의 모든 행에서 3 열의 데이터를 이동하고 해당 데이터를 새 테이블의 새 행으로 삽입해야합니다.SQL - NULL을 string.empty로 변환하십시오.

INSERT INTO [dbo].[SnmpSettings]([NetworkDiscoveryId], [RoCommunities], [RwCommunities]) 
    SELECT id, Ro_Community, RW_Communities 
    FROM [dbo].[Network_Discovery] 

위의 코드는 잘 작동,하지만 Ro_Community 및 RW_Communities는 RoCommunities 및 RwCommunities이 NULL을 허용하지 않는 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 서버 인 경우 [isnull] (http://msdn.microsoft.com/en-us/library/ms184325.aspx) (Ro_Community, '') –

+0

나는이 기능을 얼마나 순진했는지 사과드립니다. 약간의 일. 나는 당신의 가르침을 따르려는 시도에서 편집했지만 편집하지는 않습니다. –

+0

'SELECT id, isnull (Ro_Community, ''), isnull (RW_Communities, '') ' –

답변

9
SELECT ISNULL(Ro_Community, '') 

또는

SELECT COALESCE(Ro_Community, '') 

참고 : COALESCE는 SQL 서버 2005 그것은 ANSI-92 SQL 표준의 일부이기 때문에 지원, 그래서 많은 사람들이이 선호하는 것 제안 ISNULL 이상. 그러나 그것도 a bit slower이라는보고가 있습니다.

+0

'ISNULL' *이 나에게 더 빠른 방법이었습니다. –

+0

@TotZam 그것이 내가 말했던 것입니다. COALESCE는 더 느린다고합니다. – bfavaretto

관련 문제