我的 sql 查询有什么问题?

What is the wrong with my sql query?

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

Conversion failed when converting the varchar value 'DVR' to data type int.

我不知道的问题在哪里?我的 table 中没有数据,所以之前的优惠券价值为零。请帮忙..

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 returns 整数,而 'DVR' 是字符串。显然,您的 SQL 引擎试图将 'DVR' 转换为整数但失败了。尝试使用 CAST.

DATEPART 的结果转换为字符串(例如 varchar)