SQL 服务器中的串联问题
Concatenate issue in SQL Server
当我想在 SQL 服务器中使用 CONCATENATE
时:
CONCAT(year(dateadd(year, -1, left(t1.[FQuater], 4))), right(t1.[FFQuater], 2))
我收到这个错误:
列 FQuater
是 Varchar
数据类型。
希望您使用的是 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),'') + ' '
当我想在 SQL 服务器中使用 CONCATENATE
时:
CONCAT(year(dateadd(year, -1, left(t1.[FQuater], 4))), right(t1.[FFQuater], 2))
我收到这个错误:
列 FQuater
是 Varchar
数据类型。
希望您使用的是 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),'') + ' '