SQLite select在where子句中给出超出限制的值

时间:2014-07-24 09:30:21

标签: python sql python-3.x sqlite

我有一个包含一些性能数据的SQLite数据库。我想从一个名为时间的表中查询一些数据,这些数据满足一些约束条件:

  1. 处理器数量应为32.相应的列称为nProcs
  2. 给定域中的自由度数不应超过4096.该列称为DofPEPV。
  3. 我对DofPEPV的不同条目感兴趣。所以我的查询看起来像这样:

    SELECT DISTINCT DofPEPV FROM timings WHERE nProcs='32' AND DofPEPV<='4096'
    

    查询在python中执行:

    sqlcon = sqlite3.connect('database.file')
    selquery = 'SELECT DISTINCT DofPEPV FROM timings WHERE nProcs=\'32\' AND DofPEPV<=\'4096\''
    for val in sqlcon.execute(selquery):
        print(val)
    

    像魅力一样工作,除了还有写入超过4096的值,例如29791.这怎么可能发生?

2 个答案:

答案 0 :(得分:3)

您不是在这里比较整数值,而是在比较字符串值。

您想要做的是:

SELECT DISTINCT DofPEPV FROM timings WHERE nProcs= 32  AND DofPEPV<= 4096;

答案 1 :(得分:2)

SELECT DISTINCT DofPEPV FROM timings WHERE nProcs='32' AND DofPEPV<='4096'

是4096是字符串吗?如果这是整数擦除“..”,请使用此

SELECT DISTINCT DofPEPV FROM timings WHERE nProcs=32 AND DofPEPV<=4096