在变量声明中将列转换为nvarchar

rxztt3cl  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(285)

我将变量声明为:

Declare @listOfYears nvarchar(max)
set @listOfYears = 'some text to start '
select @listOfYears = 
@listOfYears  + 
CAST(Year as nvarchar(4)) from YearsTable Where Year > 2000
+ ' some text after each year'

然后得到一个错误
将varchar值'some text after each year'转换为数据类型int时,转换失败。
编辑:我刚刚意识到它试图在查询的“where”部分将“some text after each year”添加到“2000”中,我需要将它添加到select查询的每一行之后。
如何确保它在select查询返回的结果的每一行后面添加“some text after each year”,而不是在查询的where部分添加?
我需要@listofyears变量:'2001年开始的一些文本2002年之后的一些文本2003年之后的一些文本每年之后的一些文本'

z8dt9xmd

z8dt9xmd1#

我执行了您的脚本,但问题出在查询的最后一部分,您在where条件后面放了什么(+'每年之后的一些文本')
我评论了你的最后一行

Declare @listOfYears nvarchar(max)
set @listOfYears = 'some text to start '
select @listOfYears = 
@listOfYears  + 
CAST(Years as nvarchar(4)) from #yeartable Where Years > 2000
--+ 'some text after each year' -> row commented because is not correct add text after WHERE

select @listOfYears

这样就行了。也许你想这么做?

create table #yeartable (years int)
insert into #yeartable values (2000)

Declare @listOfYears nvarchar(max)
set @listOfYears = 'some text to start '
select @listOfYears = 
@listOfYears  + 
CAST(Years as nvarchar(4)) + ' some text after each year' from #yeartable Where Years > 2000

select @listOfYears

相关问题