【问题标题】:Using between operator with numeric text values in Microsoft Access SQL在 Microsoft Access SQL 中使用带数字文本值的 between 运算符
【发布时间】:2014-09-03 11:12:54
【问题描述】:

我正在尝试选择 COLUMN 的值介于 1 和 9 之间的所有行。问题是 COLUMN 的数据类型是文本,我使用以下代码来获取这些行:

SELECT * FROM TABLE WHERE COLUMN BETWEEN '1' AND '9';

除了获取 COLUMN 值介于 1 和 9 之间的行之外,我还获取 COLUMN 值介于 10、11 等的行。 我怎样才能让它只给我 COLUMN 值在 1 到 9 之间的行?

【问题讨论】:

    标签: sql ms-access between


    【解决方案1】:

    如果列中的所有值保证为整数™,您可以这样做:

    SELECT * FROM TABLE WHERE CInt(COLUMN) BETWEEN 1 AND 9
    

    【讨论】:

      【解决方案2】:

      例如这样:

      SELECT * FROM TABLE WHERE COLUMN BETWEEN '1' AND '9' and LEN(COLUMN) = 1;
      

      【讨论】:

      • 引用数值似乎很奇怪。我想你也会发现 Column 是一个保留字。
      • 试过了,效果很好,谢谢大家的帮助。我很感激:)。
      • @Fionnuala:嗯,我们正在寻找字符串。实际上只是WHERE COLUMN in ('1','2','3','4','5','6','7','8','9') - 这是另一种没有 BETWEEN 的解决方案。我同意如果这样使用 TABLE 和 COLUMN 可能会导致冲突。它们只是此处实际名称的占位符。
      【解决方案3】:

      您可以在where子句中转换列类型。

      SELECT * FROM TABLE WHERE convert(bigint,COLUMN) BETWEEN '1' AND '9';
      

      但请确保所有值都可以转换为 bigint 类型,或者您可以使用 float/int 等。

      【讨论】:

      • 你没有提到你需要它来访问微软。
      • 这不是我的问题,但无论如何它都被标记为 ms-access。
      • 是的,但是 SQL 是一种通用语言,一些数据库并不完全支持它,例如 Microsoft Access。在这种情况下,SQL 受 ms-access 支持的限制。 SQL 标记指的是语言,而不是 MS SQL Server 或其他特定数据库。
      • 通过标记 Sql 我的意思是我在 Ms-access 中使用 sql 代码
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      相关资源
      最近更新 更多