2016-08-20 125 views
0

由於我在Nvarchar內部使用了Int變量,因此我有這段代碼出錯。如果我使用SQL Server 2005:幫助連接Nvarchar和Int

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

我,而不是讓這些錯誤

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

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'.

你能幫我解決這個問題

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/>' ; 

我得到這個錯誤。

插入後,它在nvarchar可變我需要把它格式化爲錢這樣的:

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

謝謝你們!

回答

1

你需要轉換所有INT類型VARCHAR ..

你的情況,你是第一投射他們INT ..下面的語句

變化

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

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

有些值是什麼樣的? – BigBlack

+0

@BigBlack:合併的一些非空值 – TheGameiswar