使用链接 SQL 服务器 table 上的参数访问查询 Like 运算符
Access query Like operator with parameter on linked SQL Server table
对于本机 Microsoft Access 表,在查询设计器中将条件指定为 Like [some parameter] & "*"
没有问题。系统提示我输入参数,星号附加到我在提示符下输入的任何内容的末尾作为要匹配的模式,我得到一个满足条件的数据集。
当我尝试对链接的 ODBC 表(通过 SQL 服务器驱动程序连接到 Microsoft SQL 服务器)做同样的事情时,Access 会挂起,直到我终止进程。我可以通过字符串模式 (Like "some pattern*"
) 或参数提示的结果传递 Like 运算符(奇怪的是,在查询设计器标准单元格中,我必须这样表示:"" & [some parameter] & ""
),但是我无法弄清楚如何将 like 运算符与模式和参数一起传递,这对于本机 Access 表是可能的(如上所示)。我已经尝试了 CStr 函数、Chr 函数、括号的不同组合来影响运算顺序、加倍单引号、双引号、方括号等。
为了了解什么有效和无效,下面是我尝试过的一些方法,[lot]
是访问参数。第一个字符是 "o" 表示成功(至少部分成功), "x" 如果选项根本不起作用。从结果来看,我没有看到让它发挥作用的方法。
xLike [lot] & "*"
xLike [lot]
oLike "*"
o[lot] & "*" empty result
o"*" Access changes this immediately to Like "*"
x[lot]
o"""" & [lot] & """" empty result
o""" & [lot] & """ empty result, no prompt for parameter
o"" & [lot] & "" shows data for lot entered
xLike "" & [lot] & ""
xLike """" & [lot] & """"
oLike "123456" shows data for lot entered
oLike 123456 Access changes this immediately to Like "123456"
xLike ([lot] & "*")
xLike CStr([lot] & "*")
xLike ([lot])
xLike CStr([lot])
oLike ("*")
oLike CStr("*")
oLike (*) Access changes this immediately to Like ("*")
oLike CStr(*) Access changes this immediately to Like CStr("*")
oLike * Access changes this immediately to Like "*"
xLike [lot] & *
oLike * Access changes this immediately to Like "*"
o* Access changes this immediately to Like "*"
o[lot] & * Access changes this immediately to [lot] & "*" empty result
xLike ([lot] & *)
xLike (CStr([lot] & "*"))
xLike CStr([lot]) & "*"
xLike CStr([lot]) & * Access changes this immediately to Like CStr([lot]) & "*"
xLike (CStr([lot]) & "*")
xLike (CStr([lot]) & *)
xLike ([lot]) & ("*")
xLike ([lot]) & (*)
xLike CStr([lot]) & CStr("*")
xLike CStr([lot]) & CStr(*)
x(Like ([lot]) & ("*"))
谁能告诉我应该如何在查询设计器中表达条件字符串,以便 WHERE 子句以与 Like [some parameter] & "*"
传递到本机 Access 表相同的方式传递到 SQL 服务器?即使是显示传递给 SQL 服务器的内容的工具也会有所帮助。我使用的是 Access 2016、SQL Server 2014 和驱动程序 SQLSRV32.dll 版本 10.00.10240.16384。我没有使用其他驱动程序的选项,例如 SQL Server Native Client。
事实证明,Like [some parameter] & "*"
与 SQL 服务器或使用的 SQL 服务器驱动程序之间没有不兼容问题。只是查询在设计上效率很低,但在迁移到 SQL 服务器后端之前没有引起任何问题。我有一个 table,其中三个左外连接到另外三个 table,并且在右侧 table 之一的列上有一个 where 子句谓词(在文本列上)。在连接和 where 子句谓词中涉及的列上创建索引没有帮助。解决问题的方法只是将左连接更改为 table with where 子句谓词到内部连接(因为实际上,这就是 where 子句对该特定关系的作用)。此更改后,生成的数据集几乎立即返回。
对于本机 Microsoft Access 表,在查询设计器中将条件指定为 Like [some parameter] & "*"
没有问题。系统提示我输入参数,星号附加到我在提示符下输入的任何内容的末尾作为要匹配的模式,我得到一个满足条件的数据集。
当我尝试对链接的 ODBC 表(通过 SQL 服务器驱动程序连接到 Microsoft SQL 服务器)做同样的事情时,Access 会挂起,直到我终止进程。我可以通过字符串模式 (Like "some pattern*"
) 或参数提示的结果传递 Like 运算符(奇怪的是,在查询设计器标准单元格中,我必须这样表示:"" & [some parameter] & ""
),但是我无法弄清楚如何将 like 运算符与模式和参数一起传递,这对于本机 Access 表是可能的(如上所示)。我已经尝试了 CStr 函数、Chr 函数、括号的不同组合来影响运算顺序、加倍单引号、双引号、方括号等。
为了了解什么有效和无效,下面是我尝试过的一些方法,[lot]
是访问参数。第一个字符是 "o" 表示成功(至少部分成功), "x" 如果选项根本不起作用。从结果来看,我没有看到让它发挥作用的方法。
xLike [lot] & "*"
xLike [lot]
oLike "*"
o[lot] & "*" empty result
o"*" Access changes this immediately to Like "*"
x[lot]
o"""" & [lot] & """" empty result
o""" & [lot] & """ empty result, no prompt for parameter
o"" & [lot] & "" shows data for lot entered
xLike "" & [lot] & ""
xLike """" & [lot] & """"
oLike "123456" shows data for lot entered
oLike 123456 Access changes this immediately to Like "123456"
xLike ([lot] & "*")
xLike CStr([lot] & "*")
xLike ([lot])
xLike CStr([lot])
oLike ("*")
oLike CStr("*")
oLike (*) Access changes this immediately to Like ("*")
oLike CStr(*) Access changes this immediately to Like CStr("*")
oLike * Access changes this immediately to Like "*"
xLike [lot] & *
oLike * Access changes this immediately to Like "*"
o* Access changes this immediately to Like "*"
o[lot] & * Access changes this immediately to [lot] & "*" empty result
xLike ([lot] & *)
xLike (CStr([lot] & "*"))
xLike CStr([lot]) & "*"
xLike CStr([lot]) & * Access changes this immediately to Like CStr([lot]) & "*"
xLike (CStr([lot]) & "*")
xLike (CStr([lot]) & *)
xLike ([lot]) & ("*")
xLike ([lot]) & (*)
xLike CStr([lot]) & CStr("*")
xLike CStr([lot]) & CStr(*)
x(Like ([lot]) & ("*"))
谁能告诉我应该如何在查询设计器中表达条件字符串,以便 WHERE 子句以与 Like [some parameter] & "*"
传递到本机 Access 表相同的方式传递到 SQL 服务器?即使是显示传递给 SQL 服务器的内容的工具也会有所帮助。我使用的是 Access 2016、SQL Server 2014 和驱动程序 SQLSRV32.dll 版本 10.00.10240.16384。我没有使用其他驱动程序的选项,例如 SQL Server Native Client。
事实证明,Like [some parameter] & "*"
与 SQL 服务器或使用的 SQL 服务器驱动程序之间没有不兼容问题。只是查询在设计上效率很低,但在迁移到 SQL 服务器后端之前没有引起任何问题。我有一个 table,其中三个左外连接到另外三个 table,并且在右侧 table 之一的列上有一个 where 子句谓词(在文本列上)。在连接和 where 子句谓词中涉及的列上创建索引没有帮助。解决问题的方法只是将左连接更改为 table with where 子句谓词到内部连接(因为实际上,这就是 where 子句对该特定关系的作用)。此更改后,生成的数据集几乎立即返回。