Access SQL:文本框后的单字符通配符

Posted

技术标签:

【中文标题】Access SQL:文本框后的单字符通配符【英文标题】:Access SQL: Single Character Wildcard Following Textbox 【发布时间】:2015-10-13 10:59:00 【问题描述】:

我想生成一份报告,显示某个年级的所有班级。我的数据从第 1 年到第 12 年,班级从 A 到 H。例如,它从 1A 开始,到 12H 结束。

我编写了以下 SQL 代码以返回某个年级的所有班级,但我遇到了一个我知道我会遇到的问题。我的代码如下:(注意,txtYearLevel 是一个文本框,用户可以在其中输入他们希望查看的年级)

SELECT [form classes].[Form Class]
FROM [form classes]
WHERE [form classes].[Form Class] like Forms![navigation form]![navigationsubform].Form!txtYearLevel & "_";

^ 这不返回任何结果。我想我应该使用这样的方法,因为 _ 表示单个通配符。 (所以这适用于个位数的年份水平,我会编写一个类似的代码来处理两位数的年份水平)

我也试过了:

SELECT [form classes].[Form Class]
FROM [form classes]
WHERE [form classes].[Form Class] like Forms![navigation form]![navigationsubform].Form!txtYearLevel & "*";

^ 这将返回结果。但是,例如,如果我输入“1”,我将获得 1、10、11 和 12 年的所有课程。

基本上,我想找到一种方法来区分单个数字类别和两位数字类别,这样它们就不会出现在搜索中,除非我专门寻找一个两位数字类别(例如,通过输入“12”)。

谢谢!

【问题讨论】:

【参考方案1】:

在 Access SQL 中,? 是单个字符的通配符,而不是 _

所以——

SELECT [form classes].[Form Class]
FROM [form classes]
WHERE [form classes].[Form Class] LIKE 
    Forms![navigation form]![navigationsubform].Form!txtYearLevel & "?";

【讨论】:

以上是关于Access SQL:文本框后的单字符通配符的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django ORM 中进行单字符替换( _ )的通配符搜索?

09 SQL语言——通配符(模糊查询),转义字符(使用escape)

SQL Server:SQL Like 通配符特殊用法:Escape

SQL Server:SQL Like 通配符特殊用法:Escape

记录mysql使用like匹配数据时关于通配符的使用误区

ant 通配符