我目前正在研究在python 2.7中使用sqlite的项目,并且需要返回列A *列B的值大于某个数字的行。这是代码的样子:
c.execute('SELECT * FROM table_1 WHERE validation=1 AND colA * colB > 10000')
唯一的问题是这不起作用......我知道它在MySQL中是可能的,所以我希望它也适用于sqlite,虽然我没有运气找到完成这项工作的方法。 所以我的问题是:是否可以用sqlite执行这种类型的操作,如果是,怎么做?
编辑:这是更完整的代码,老实说,我假设我有一个小的语法错误或者根本不可能。因为我的代码很长,所以我觉得不可能发布所有内容。我试图查询的表格如下: c.execute('CREATE TABLE IF NOT EXISTS table_1(ticker TEXT, colA INTEGER, colB INTEGER, company_name TEXT, market_cap TEXT, sector TEXT, validation INTEGER, UNIQUE(ticker) ON CONFLICT IGNORE)')
表格中的前几个条目如下:
股票,可乐,COLB,COMPANY_NAME,market_cap,扇区,验证
“ACFN”,“0.18”,“71,200”,“Acorn Energy”,“5.16M”,“Industrial”,“1”
“ADGE”,“0.3”,“64,458”,“American DG”,“14.71M”,“工业产品”,“1”
“ACUR”,“0.97”,“66,358”,“Acura Pharmaceuticals”,“11.52M”,“医疗保健”,“1”
另外,使用以下语句会返回上面的最后一行。
c.execute('SELECT * FROM table_1 WHERE validation=1 AND colB > 25000 AND colA> 0.5')
但是如果这个语句返回最后一列,那么我的原始代码将colA与colB相乘也应该这样做。
答案 0 :(得分:0)
所以,为了使其成为正式并关闭此事,我将写下我自己的问题的答案。 输入colA的数据采用十进制值(例如:0.91),输入colB的数据采用大于1000的整数值(例如:31,000)。当我尝试构建SELECT语句时,例如:
c.execute('SELECT * FROM table_1 WHERE validation=1 AND colB > 25000 AND colA> 0.5')
它返回了我想要的值,因为31,000> 25000为真且0.91> 0.5是真的。但是,当我尝试在WHERE语句中将两个列相乘时,它会将这两个数字作为十进制值读取。因此声明colA * colB> 10000是假的,因为0.91 * 31.000 = 28.21。只需删除colB中的逗号即可解决问题。 尽管如此,这个问题仍然很奇怪,因为当一个人试图进行数学运算时它只读31,000作为31.000。