2017-02-13 1 views
1

나는 형태SELECT 문에서 문자열 연결이 작동하지 않는 이유는 무엇입니까?

SELECT '(''' + 
     SomeVarCharColumn + 
     ''',' + 
     CONVERT(NVARCHAR(MAX), SomeIntColumn) + 
     ',' + 
     CONVERT(NVARCHAR(MAX), SomeOtherIntColumn) 
     + ')' 
FROM SomeTable 

의 쿼리를이 모든 결과는 NULL이다. 내가 잘못 가고있는 어떤 생각? 모든 열이 NULL입니다

select '(''' 
    + isnull(somevarcharcolumn,'') 
    + ''',' 
    + isnull(convert(nvarchar(max), someintcolumn),'null') 
    + ',' 
    + isnull(convert(nvarchar(max), someotherintcolumn),'null') 
    + ')' 
from sometable 
+2

을 찾을 수 있습니다. String + null = null –

답변

2

null + 1null
null + 'things' 대신이 시도 null

입니다. COALESCE() :

SELECT '(''' + COALESCE(SomeVarCharColumn, '') + ''',' + 
     COALESCE(CONVERT(NVARCHAR(MAX), SomeIntColumn), '') + ',' + 
     COALESCE(CONVERT(NVARCHAR(MAX), SomeOtherIntColumn), '') + ')' 
FROM SomeTable 
2

경우, 값이 NULL입니다 :

0

CONCAT() 함수를 사용하십시오. 널 (NULL) 값이 _ 생하면 결과 문자열에서 생략됩니다. 또한, 변환은 변환이 필요 암시 적 없다는 char int로, 당신은 아마 당신이 당신의 값 중 하나 이상에 NULL이 여기에 암시 적 변환의 차트 https://msdn.microsoft.com/en-us/library/ms187928.aspx

SELECT 
    CONCAT('(''',SomeVarCharColumn,''',',SomeIntColumn,',',SomeOtherIntColumn,')') AS NewVarchar 
FROM SomeTable 
관련 문제