2016-08-20 15 views
0

Nvarcharの中にIntという変数を使用しているため、このコードブロックにはエラーがあります。SQL Server 2005:NvarcharとIntを連結するためのヘルプ

DECLARE @FattAnnoCorrente INT; 
DECLARE @Tabscontianno1 NVARCHAR(MAX); 

SET @Tabscontianno1 = 
N'<p align="left"><b>ANNO ' + @Anno1 + ' - </b><b>' + @FattAnnoCorrente + '<br> 
    </b></p> 
<table height="62" border="1" cellpadding="2" cellspacing="2" 
    width="501"> 
    <tbody> 
    <tr> 
     <td valign="top">FATTURATO<br> 
     </td> 
     <td valign="top">SCONTO<br> 
     </td> 
    </tr>' + CAST ((
        SELECT 
        td = SUM(TOTNETTORIGA), '', 
        td = SCONTIESTESI 
        FROM .dbo.TESTEDOCUMENTI 
        INNER JOIN .dbo.RIGHEDOCUMENTI 
        ON PROGRESSIVO=IDTESTA AND TOTNETTORIGA <>'0' 
        WHERE CODCLIFOR = @CodiceCliente AND .dbo.TESTEDOCUMENTI.DOCCHIUSO = '0' AND .dbo.TESTEDOCUMENTI.BLOCCATO = '0' AND .dbo.TESTEDOCUMENTI.TIPODOC = 'FVC' AND .dbo.TESTEDOCUMENTI.ESERCIZIO = YEAR(GETDATE()) 
        GROUP BY TESTEDOCUMENTI.ESERCIZIO,SCONTIESTESI 
    FOR XML PATH('tr'), TYPE) 
    AS NVARCHAR(MAX)) + 
    N' </tbody> 
</table>'+ 
    N'<BR/>' ; 

私はこのエラーを取得する:

Conversion failed when converting the nvarchar value 'ANNO 2016 -' to data type int.

私は

CAST(CAST(COALESCE(@FattAnnoCorrente) as int) as varchar(255)) 

を使用している場合は、私が代わりにこれらのエラーを取得:

Msg 102, Level 15, State 1, Line 154
Incorrect syntax near ')'.
Msg 156, Level 15, State 1, Line 173
Incorrect syntax near the keyword 'FOR'.

あなたは、この問題を解決するために私を助けることができます。

nvarchar変数に挿入した後、私はそのようにお金としてそれをフォーマットする必要があります。

'€ ' + REPLACE(CONVERT(varchar, CAST(@FattAnnoCorrente AS money), 105),',','.') 

は君たちをありがとう!

答えて

1

あなたはVARCHARにすべてINTタイプをキャストする必要があります..あなたのケースで

あなたが最初..

ステートメントの下に変更

CAST(CAST(COALESCE(@FattAnnoCorrente) as int) as varchar(255)) 

をINTするためにそれらをキャストしています

cast(COALESCE(@FattAnnoCorrente,'somevalue') as varchar(255)) 
+0

何かの値は何ですか? – BigBlack

+0

@BigBlack:合体のための非ヌル値 – TheGameiswar

関連する問題