Следующее поведение Visual FoxPro меня озадачивает.
CREATE TABLE test_17 (A C(2), B N(10,2))
CREATE TABLE test_18 (A C(2), B N(20))
INSERT INTO test_17 values ('C1', 1037.60)
INSERT INTO test_17 values ('C2', 2411.50)
INSERT INTO test_18 VALUES ('C1', 1037600)
INSERT INTO test_18 VALUES ('C2', 2411500)
Следующий запрос
SELECT * FROM test_17 a, test_18 b WHERE a.A = b.A AND a.B*1000 = b.B
возвращает только строку C2 , а не C1 , тогда как:
SELECT * FROM test_17 a, test_18 b WHERE a.A = b.A AND a.B*1000 <> b.B
возвращает ничего как ожидалось и
SELECT IIF(a.B*1000 = b.B,'T','F') FROM test_17 a, test_18 b WHERE a.A = b.A
возвращает T , 'T', как и ожидалось.
Может кто-нибудь объяснить мне, почему Visual FoxPro ведет себя так? Спасибо.