我的SQL查询有什么问题?

时间:2015-02-22 06:00:41

标签: 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 
where 
   left(isnull(voucher, 0), 3) = 'DVR'

2 个答案:

答案 0 :(得分:4)

DATEPART返回整数,而'DVR'是一个字符串。显然,您的SQL引擎会尝试将“DVR”转换为整数并失败。尝试使用DATEPARTCAST的结果转换为字符串(例如varchar)。

答案 1 :(得分:0)

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