使用RND()的数据类型不匹配

时间:2013-07-09 12:43:20

标签: sql ms-access random

我需要一些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')),则查询可以正常工作。但是,如果城市名称为“Columbus”,则会出现数据类型不匹配错误。

2 个答案:

答案 0 :(得分:7)

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

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

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

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

SELECT *
FROM a
WHERE NOT ISNUMERIC(a.Number) 

答案 1 :(得分:0)

运行此查询:

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

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