3

我需要一些有关 SQL 查询的帮助。该查询旨在从表中返回 75 条随机记录。这是查询:

SELECT TOP 75 a.Number, a.Location, a.Manufacturer
FROM a
WHERE (((a.Location) = 'Columbus'))
ORDER BY Rnd(Int(Now()*Number)-Now()*Number);

如果我在WHERE子句中使用不同的城市名称,则此查询可以正常工作。例如,如果我将WHERE子句更改WHERE (((a.Location) = 'Toledo'))为查询有效。但是,如果城市名称是“哥伦布”,则会出现数据类型不匹配错误。

4

2 回答 2

8

您需要验证Number列中的值a.Location = 'Columbus'... 我怀疑您在其中一个 Number 列中有一个非数字值,这会导致类型不匹配错误。

您可以使用它来缩小范围:

SELECT *
FROM a
WHERE NOT ISNUMERIC(a.Number) and a.Location = 'Columbus'

或者更好的是,排除该位置以查找任何可能的错误值:

SELECT *
FROM a
WHERE NOT ISNUMERIC(a.Number) 
于 2013-07-09T12:50:44.857 回答
0

运行此查询:

SELECT a.Number, a.Location, a.Manufacturer
FROM a
WHERE (((a.Location) = 'Columbus'))

查询运行后,按 a.Number 对其进行排序;先升后降。我敢打赌,其中一条记录在该字段中有一个空白值,或者一个不是数字的值,当您对其进行排序时,该记录将上升到查询的顶部。当您尝试计算随机数时,此字段中任何不是数字的值都会导致数据类型不匹配。

于 2013-07-09T12:51:35.143 回答