2017-02-13 6 views
1

は、私は、フォームSELECT文の文字列連結が機能しないのはなぜですか?

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

のクエリを持っており、すべての結果はNULLです。私がどこに間違っているのか?

+2

おそらく、あなたは1つ以上の値にNULLを持つ暗黙的な変換のチャートを見つけることができます。 String + null = null –

答えて

2

null + 1null
null + 'things'である代わりにこれを試してnull

です:任意の列がNULLの場合、値はNULLある

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

COALESCE()

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

CONCAT()関数を使用します。ヌル値が検出されると、結果の文字列から単純に省略されます。また、変換をcharへのintは変換のための暗黙の必要ありません、あなたはここでhttps://msdn.microsoft.com/en-us/library/ms187928.aspx

SELECT 
    CONCAT('(''',SomeVarCharColumn,''',',SomeIntColumn,',',SomeOtherIntColumn,')') AS NewVarchar 
FROM SomeTable 
関連する問題