SQL 服务器中的串联问题

Concatenate issue in SQL Server

当我想在 SQL 服务器中使用 CONCATENATE 时:

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

我收到这个错误:

FQuaterVarchar 数据类型。

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

Concat 本身算不了什么。您需要使用 select 或设置

例如。

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)

只需使用旧版本 SQL Server 上可用的 + 而不是 SQL Server 2012 上可用的 concat

 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),'') + ' '