SQL Server中的连接问题

时间:2016-03-23 10:03:50

标签: sql sql-server sql-server-2008 concatenation concat

当我想在SQL Server中使用CONCATENATE时:

CONCAT(year(dateadd(year, -1, left(t1.[FQuater], 4))), right(t1.[FFQuater], 2))

我收到此错误:

enter image description here

FQuater的数据类型为Varchar

2 个答案:

答案 0 :(得分:7)

只需使用旧版SQL Server上提供的+,而不是concat,只能从SQL Server 2012获得:

 year(dateadd(year,-1,left(t1.[FQuater],4))) +''+ right(t1.[FFQuater],2)

避免空值(如果可能)

 isnull(year(dateadd(year,-1,left(t1.[FQuater],4))),'') +''+ isnull(right(t1.[FFQuater],2),'')

编辑:正如@ ravish.hacker所提到的,你可以这样做:

 isnull(year(dateadd(year,-1,left(t1.[FQuater],4))),'') +''+ isnull(right(t1.[FFQuater],2),'') + ' '

答案 1 :(得分:2)

希望您使用的是SQL Server 2012或更高版本。

康卡特本身并不算什么。您需要使用select或set。

例如。

Select CONCAT(year(dateadd(year,-1,left(t1.[FQuater],4))),right(t1.[FFQuater],2))

对于SQL Server 2008,这将起作用:

DECLARE @FQuater NVARCHAR(100) = '20110826'

SELECT CAST(YEAR(DATEADD(YEAR, - 1, LEFT(@FQuater, 4))) AS NVARCHAR) + CAST(RIGHT(@FQuater, 2) AS NVARCHAR)