2013-10-22 53 views
-1

我有這個串接功能的作品在SQL Server 2012中細:串聯在SQL Server 2008和2012

declare @reportN nvarchar(255) 
set @reportName = concat(year(getdate()), '-',33); 

select @reportN 

其中給出結果2013-33

我也有SQL Server 2008中,其不支持concat函數,所以當我嘗試按照以下方式執行操作時。

declare @r nvarchar(255) 
set @r = (year(getdate()) + '-' + 33); 
select @r 

我得到的結果2046基本上它增加了它。你能讓我知道如何解決它,所以我得到了2013-33的結果。由於

+0

投的一年一個字符串'投(年(GETDATE())爲varchar(4))+「-33'' – Taryn

+0

感謝球員它工作得很好。你們真棒。 –

回答

1

你需要讓你的year(getDate())一個CHAR(或其他文本)。你將它連接到一個整數33.由於year()返回一個INT,並且你連接到它返回的INT(33)和INT。

declare @r nvarchar(255) 
set @r=(CONVERT(CHAR(4), year(getdate()))+'-'+'33'); 
select @r 
+0

感謝@ wegeld它工作正常。 –

3

您可以只投年爲一個字符串:

declare @r nvarchar(255) 
    set @r= CAST(YEAR(GETDATE()) AS CHAR(4)) +'-33'; 
    select @r 

2012年CONCAT()功能將所有輸入的字符串,你需要明確地做到這一點之前到2012年,如果你想連接字符串。

0

33轉換爲varchar:

declare @r nvarchar(255) 
     set @r=(convert(varchar(4),year(getdate()))+'-'+'33'); 
     select @r 
+2

year會返回一個'int',所以你不能連接一個字符串到它。 – Taryn

+0

我知道了...我的壞...我編輯了查詢。 – Sonam