在 Microsoft Access SQL 中使用带数字文本值的 between 运算符

Posted

技术标签:

【中文标题】在 Microsoft Access SQL 中使用带数字文本值的 between 运算符【英文标题】:Using between operator with numeric text values in Microsoft Access SQL 【发布时间】: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 之间的行?

【问题讨论】:

【参考方案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 代码

以上是关于在 Microsoft Access SQL 中使用带数字文本值的 between 运算符的主要内容,如果未能解决你的问题,请参考以下文章

将 Microsoft SQL Server 中的文件表链接到 Microsoft Access 2016 中的表

使用 Access SQL 函数时,Microsoft Access ODBC 驱动程序导致访问冲突

如何在 Microsoft Access 中通过 VBA 设置 INSERT SQL 查询的参数值?

如何使用 SQL 在 Microsoft Access 2013 中创建查找字段?

Microsoft Access SQL 查询计数不同

如何将表单绑定到 Microsoft Access 中的 SQL 语句