SQL命令BETWEEN仅在我为列提供小范围时才有效.这就是我的意思:
我的代码:
import AzureSQLHandler as sql database_layer = sql.AzureSQLHandler() RESULTS_TABLE_NAME = "aero2.ResultDataTable" where_string = " smog BETWEEN '4' AND '9'" print database_layer.select_data(RESULTS_TABLE_NAME, "*", where_string)
这对应于SQL命令:
SELECT * FROM aero2.ResultDataTable BETWEEN '4.0' AND '9.0'
和select_data返回包含所有这些行的二维数组.
我在这里引用的列已经保存了所有等于5.0的值.
这个作品很精细!
但是,当我将范围增加到'4.0'和'200.0'时,它不会返回任何内容.
数据库中的字符串按字母顺序进行比较.字符串'4.0'
大于字符串,'200.0'
因为字符位于字符4
之后2
.如果需要支持此类查询,则应在数据库中使用数字类型.确保该smog
列具有数字类型(例如DOUBLE)并BETWEEN 4.0 AND 200.0
在查询中使用.
如果您无法更改可以使用的架构CAST
:cast(smog as DOUBLE) BETWEEN 4.0 and 200.0
但是此解决方案效率较低.