在SQL Server 2005中将varchar转换为数据类型int时出错

时间:2014-04-01 09:47:48

标签: sql-server

我有专栏AccountNovarchar(50))。当我尝试使用AccountNo作为过滤器搜索数据时,我会收到错误信息,如下所示

enter image description here

我的dataTable结构如下:

enter image description here

我的代码给了我错误

SELECT 
   Date, particular,
   flag_voucherType +' '+ CONVERT(VARCHAR,C.billNo) AS [VoucherNo.],
   Debit, Credit, Narration 
FROM 
    ((SELECT 
         Particular, flag_voucherType,accountNo,companyId 
      FROM  
         tblInsertParticularRecord 
      WHERE 
         Credit = 0 
         AND flag = CONVERT(VARCHAR(50), @accountNum) 
         AND companyId = @companyId) AS A  
INNER JOIN 
    (SELECT  
        CONVERT(Decimal,0) AS Debit, Debit AS Credit, accountNo,companyId, billNo 
     FROM tblInsertParticularRecord 
     WHERE 
        flag1 = 0 
        AND flag = CONVERT(VARCHAR(50), @accountNum) 
        AND companyId = @companyId) AS B ON A.accountNo = B.accountNo AND A.companyId = B.companyId)
INNER JOIN 
     (SELECT 
          Date, billNo, companyId, Narration 
      FROM tblJournalDateNarrationDetails) AS C ON (B.billNo = C.billNo AND B.CompanyId = C.companyId)

1 个答案:

答案 0 :(得分:0)

您是否在乎阅读错误?你猛拉了一小段字符串,但是 - 猜猜是什么 - 从他的东西你没有标出它已经很清楚字符串不是int。 " -1-00-1"最后不是你可以转换成字符串的东西。回到有要求的绘图板。

EIther你的帐户是一个编码字符串(" - "混入),在这种情况下你需要一些严肃的字符串操作来删除多余的符号才能调用转换 - 或 - 好 - 某人真的没有费心去检查账号是否完全是字符串。你不是在转换函数中抛出那种类型的字符串,并期望它神奇地工作。

最有可能的数字是代码 - 具有商业意义的东西,但程序是一系列字符 - 不,你甚至不应该尝试将它转换为数字,你的错误。将它们存储为字符串。