SQLite3函数之间的不一致错误

时间:2018-06-14 11:24:46

标签: python database sqlite

我正在使用带有Python的SQLite3数据库,并已通过csv导入插入数据。当我正在玩它以熟悉数据库并尝试各种命令时,我意识到某处有一个错误。

在最后一行的结果中可以看到错误:

import sqlite3
con = sqlite3.connect('databaseTest.db')
cur = con.cursor()

cur.execute("SELECT avg(LOAN_AMOUNT) FROM loans")
print(cur.fetchone())            # Result: 832.23€

cur.execute("SELECT count(*) FROM loans WHERE LOAN_AMOUNT BETWEEN 1000 AND 2000")
print(cur.fetchone())            # Result: 414114

cur.execute("SELECT count(*) FROM loans WHERE LOAN_AMOUNT BETWEEN 500 AND 2000")
print(cur.fetchone())            # Result: 0

正如您所看到的那样,错误发生在最后一个声明中,表示有0个贷款,金额介于500和2000之间(而贷款金额为414114,金额介于1000和2000之间)。

有谁知道我做错了什么?我是编码和使用数据库的新手,所以它可能是一个非常简单,愚蠢的错误。我检查了数据库中的数据似乎都很好。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

由于您没有回答专栏数据类型的问题,因此我必须假设它是TEXT,我的答案基于此。至少我用TEXT进行的q& d测试显示了你在问题中描述的行为。

字符串的比较是通过一对一匹配完成的。 500作为字符串的第一个字符的值大于2000的第一个字符作为字符串。非常简化,您的条件类似于value greater than 5 and less than 2

print("500" > "2000") # True!!!!
print(500 > 2000)     # False