【问题标题】:SQL BETWEEN command not working for large rangesSQL BETWEEN 命令不适用于大范围
【发布时间】:2015-12-18 04:08:45
【问题描述】:

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”时,它不会返回任何内容。

【问题讨论】:

    标签: python sql azure-sql-database pyodbc


    【解决方案1】:

    数据库中的字符串按字母顺序进行比较。字符串'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,但是这种解决方案效率较低。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2017-10-20
      • 1970-01-01
      相关资源
      最近更新 更多