我的sql查询有什么问题?

我的sql查询有什么问题?,sql,database,sql-server-2008,Sql,Database,Sql Server 2008,我想做一个代码,但它显示了一个错误的文本 将varchar值“DVR”转换为数据类型int时,转换失败 我不知道哪里有问题?我的表中没有数据,因此以前的凭证值为零。请帮忙 select 'DVR'+ DATEPART(YEAR, GETDATE()) + RIGHT('00000' + convert(varchar, (ISNULL(MAX(right(voucher, 5)), 0) + 1)), 5) as vno from tblledger w

我想做一个代码,但它显示了一个错误的文本

将varchar值“DVR”转换为数据类型int时,转换失败

我不知道哪里有问题?我的表中没有数据,因此以前的凭证值为零。请帮忙

select 
   'DVR'+ DATEPART(YEAR, GETDATE()) + 
          RIGHT('00000' + convert(varchar, (ISNULL(MAX(right(voucher, 5)), 0) + 1)), 5) as vno 
from 
   tblledger 
where 
   left(isnull(voucher, 0), 3) = 'DVR'

凭证是数字类型吗?如果是这样,那么当您试图与VARCHAR的“DVR”进行比较时,错误消息是有意义的。

DATEPART
返回整数,而“DVR”是字符串。显然,您的SQL引擎试图将“DVR”强制转换为整数,但失败了。尝试使用
CAST

DATEPART
的结果转换为字符串(例如varchar)。这是一条注释,不是答案否,凭证是varchar类型。它应该像DVR1500001