简单查询令人难以置信的结果

时间:2014-05-14 04:36:38

标签: sql .net oledb visual-foxpro

不确定如何解释,除非这是一个错误。我使用VFP OLEDB驱动程序连接到DBF数据库并尝试运行以下查询:

SELECT id FROM MyDBF WHERE (id > 21800) AND (id < 21820)

我得到以下结果(将它们复制到一行以节省空间):

21810, 21811, 21812, 21813, 21814, 21815, 21816, 21817, 21818, 21819

现在我稍微更改了查询:

SELECT id FROM MyDBF WHERE (id > 21810) AND (id < 21820)

您希望它返回上一个结果中除第一个结果之外的所有ID。 Booo!查询不会返回任何行。

为了确保我不困,我运行以下查询

SELECT id FROM MyDBF WHERE (id = 21817)

应该返回一行,但它不会。不知道发生了什么。我检查了字段类型,它是OleDbType.Numeric

这是我还是MS?

1 个答案:

答案 0 :(得分:1)

我发布了我在这里找到的解决方法,以帮助任何未来的读者。非常感谢Oleg的帮助。

使用INT(id) = 21817代替id = 21817似乎有效。其他版本的SQL语句(例如INT(id) BETWEEN x AND yINT(id) > x AND INT(id) < y)也可以正常工作。 FoxPro的NUMERIC数据类型与OLEDB驱动程序处理它的方式之间可能存在一些差异。