【问题标题】:SQL Server - Conversion FailedSQL Server - 转换失败
【发布时间】:2014-11-22 00:09:16
【问题描述】:

我正在运行一段非常简单的 SQL,并收到一个非常奇怪的错误,我似乎无法解释。

我收到以下错误:

Conversion failed when converting the nvarchar value '20.02.01' to data type int.

显然,我会在我的查询中寻找一些试图将 nvarchar 值转换为 int 的东西,但正如您在下面看到的那样,没有任何东西可以这样做!

我不知道为什么会发生这种情况。

请帮忙!

SELECT  R.ReservationsID,
        R.CollectionCompanyName,
        R.CollectionCompanyAddress1,
        R.CollectionCompanyAddress2,
        R.CollectionCompanyTown,
        R.CollectionCompanyPostCode,
        R.DeliveryCompanyName,
        R.DeliveryCompanyAddress1,
        R.DeliveryCompanyAddress2,
        R.DeliveryCompanyTown,
        R.DeliveryCompanyPostCode,
        R.[DeliveryCompanyTel No],
        hw.WasteName,
        hw.WasteTicket,
        hw.SizeName,
        hw.Comments,
        hw.QTY,
        hw.OriginalOrderQty,
        hw.gross,
        hw.tare,
        hw.Net,
        C.PremisesCode,
        pec.EwcCode,
        pec.[Description] 'EWC Desc',
        RI.SICCode,
        lwt.WCode  'EWC',
        R.ActualDeliveryTime,
        R.ActualDeliveryDate



FROM
tblReservation R
LEFT JOIN dbo.tblHazLinesWaste hw ON hw.resid = r.ReservationsID
LEFT JOIN dbo.PdaEwcCode pec ON pec.HazCodeID = hw.EWCCodeID
LEFT JOIN tblCustomer C ON C.CustomerID = R.CustomerID 
LEFT JOIN dbo.tblReservationItems RI ON RI.reservationsID = R.ReservationsID
LEFT JOIN dbo.lookupWasteTypes lwt ON lwt.WCode = RI.EWCCodeID

WHERE
hw.Deleted != 1

【问题讨论】:

  • 检查你的表定义,是否所有的ID fls都具有相同的数据类型?实际上保留 ID 是字符串,hw.resid 是 bigint 还是 uid?
  • Omg 将其作为答案,我会接受,我知道出了什么问题。
  • 很高兴能帮上忙。
  • 是的,唯一可能发生的部分是 JOIN 的 ON 部分,其中使用了表达式...

标签: sql sql-server tsql


【解决方案1】:

检查您的表定义,是否所有 ID fls 都具有相同的数据类型?实际上保留 ID 是字符串,hw.resid 是 bigint 还是 uid?

【讨论】:

  • 是的 - LEFT JOIN dbo.lookupWasteTypes lwt ON lwt.WCode = RI.EWCCodeID 是问题,谢谢我只是没有发现它。我会在 10 分钟内接受。
【解决方案2】:

字段名称使用单引号:pec.[Description] 'EWC Desc',lwt.WCode 'EWC',。那些应该是双引号。单引号用于字符串文字。

除此之外,检查ON 子句中字段的数据类型,以及您要比较字段的WHERE 子句。

【讨论】:

  • 语法上单引号适用于别名列。
  • @ParanoidAndroid 啊,你是对的。我想我只是在 SQL Server、PostgreSQL 和 Oracle 之间来回切换,所以我只是避免使用那种语法。 Oracle 语法(因此是 PostgreSQL 语法)不允许您这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-26
  • 2014-01-17
  • 1970-01-01
  • 2017-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多