不确定如何解释,除非这是一个错误。我使用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?
答案 0 :(得分:1)
我发布了我在这里找到的解决方法,以帮助任何未来的读者。非常感谢Oleg的帮助。
使用INT(id) = 21817
代替id = 21817
似乎有效。其他版本的SQL语句(例如INT(id) BETWEEN x AND y
和INT(id) > x AND INT(id) < y
)也可以正常工作。 FoxPro的NUMERIC
数据类型与OLEDB驱动程序处理它的方式之间可能存在一些差异。