我正在使用带有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之间)。
有谁知道我做错了什么?我是编码和使用数据库的新手,所以它可能是一个非常简单,愚蠢的错误。我检查了数据库中的数据似乎都很好。
非常感谢任何帮助!
答案 0 :(得分:2)
由于您没有回答专栏数据类型的问题,因此我必须假设它是TEXT,我的答案基于此。至少我用TEXT进行的q& d测试显示了你在问题中描述的行为。
字符串的比较是通过一对一匹配完成的。
500作为字符串的第一个字符的值大于2000的第一个字符作为字符串。非常简化,您的条件类似于value greater than 5 and less than 2
。
print("500" > "2000") # True!!!!
print(500 > 2000) # False