【问题标题】:I can't get this error fixed : conversion failed when converting the nvarchar value我无法修复此错误:转换 nvarchar 值时转换失败
【发布时间】:2012-03-22 09:41:55
【问题描述】:

我是 sql 的新手,可以通过我的查询找到问题,我收到此错误: 消息 245,第 16 层,状态 1,第 10 行 将 nvarchar 值 '00999-00-210312-11' 转换为数据类型 int 时转换失败。

Declare @Referenceid Int

SET @Referenceid = (
                    SELECT TOP 1 (CASE WHEN ad.ReferenceID LIKE '%NO ID%' THEN (RIGHT(MAX(ad.ReferenceID),2)+10)END) 
                    FROM Campaign.dbo.Assets_DailyBulkImport AS ad
                    WHERE (ad.ReferenceID IS NOT NULL)
                    GROUP BY ad.ReferenceID
                    ORDER BY ad.ReferenceID DESC);

Select (c.Note + '' + '999' + N'-' + '00' + N'-' +
                      (SELECT     REPLACE(CONVERT(VARCHAR(8), GETDATE(), 3), '/', '') AS MMDDYY) + N'-' + @Referenceid)
                  FROM  Assets_DailyBulkImport AS a INNER JOIN
                        Controls_Profiles AS c ON a.Profile = c.Venture
                  where a.ReferenceID=@ReferenceID

【问题讨论】:

  • 如果你得到你想要的信息,不要把答案标记为已接受

标签: sql


【解决方案1】:

它说 '00999-00-210312-11' 是一个字符串值,您不能将其转换为整数值。如您所见 - 是数据的一部分,因此它必须是字符串,即 varchar 它不是整数值,这是它给出错误的原因。

所以要解决你的错误,你需要改变这一行

 (SELECT     REPLACE(CONVERT(VARCHAR(8), GETDATE(), 3), '/', '') AS MMDDYY) + N'-' 
+ cast(@Referenceid as varchar(10)) 

在您的代码中,@Referenceid 是整数值,您不能直接附加它,您首先需要将其转换为 cast(@Referenceid as varchar(10))

【讨论】:

  • 感谢您的回复...我确实按照您的建议做了,但仍然给我同样的错误
  • @user1285520 - 也可以将此 (RIGHT(MAX(ad.ReferenceID),2)+10)END) 更改为 cast((RIGHT(MAX(ad.ReferenceID),2)+10)END ) 因为 varchar(20)) 可能会解决您的问题..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 2015-06-06
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多