我从 SQL Server 得到一些奇怪的行为。我有一个返回金额字段的基础视图。该金额字段正在从 VARCHAR(50) 转换为 FLOAT。
我可以成功运行以下查询:
SELECT AMOUNT
FROM vReturnDetails
我还可以成功运行以下查询:
SELECT AMOUNT
FROM vReturnDetails v
INNER JOIN MyTable t
ON t.LicenceNumber = v.LicenceNumber
AND t.ReturnYear = v.ReturnYear
WHERE t.ReturnYear = 2012
同样,我可以运行此查询:
SELECT AMOUNT
FROM vReturnDetails v
INNER JOIN MyTable t
ON t.LicenceNumber = v.LicenceNumber
AND t.ReturnYear = v.ReturnYear
WHERE t.ReturnYear <> 2012
这是它变得奇怪的地方,我不能运行以下任何一个:
SELECT AMOUNT
FROM vReturnDetails v
INNER JOIN MyTable t
ON t.LicenceNumber = v.LicenceNumber
AND t.ReturnYear = v.ReturnYear
WHERE t.ReturnYear = 2012 OR t.ReturnYear <> 2012
SELECT AMOUNT
FROM vReturnDetails v
INNER JOIN MyTable t
ON t.LicenceNumber = v.LicenceNumber
AND t.ReturnYear = v.ReturnYear
我可以成功运行这个查询:
SELECT AMOUNT
FROM vReturnDetails v
INNER JOIN MyTable t
ON t.LicenceNumber = v.LicenceNumber
AND t.ReturnYear = v.ReturnYear
WHERE t.ReturnYear <> 2013 --2013 is a dummy value that doesn't exist
任何人都可以阐明这里的幕后发生的事情。这对我来说毫无意义,所以我不确定从哪里开始寻找解决问题的方法。
我收到的错误是
将数据类型 varchar 转换为浮点数时出错。
这是在 Sql Server 2008 SP2 上