SQL查询语句报错‘Missing an Operator’,请求协助排查问题
问题排查:SQL语句"缺少运算符"错误
先看你提供的SQL拼接代码:
"SELECT Users.Email FROM [Users] WHERE ((Users.Role) Like 'AO' AND (Users.Organization) Like " & Me.boOrgs & ")"
错误原因
Users.Organization Like 后面的变量 Me.boOrgs 是字符串值,但你没给它加单引号,导致SQL解析时把变量值当成了字段名或关键字,语法结构断裂,触发"缺少运算符"错误。如果Me.boOrgs包含空格、特殊字符,还会引发其他语法问题,但当前核心错误是缺失单引号。
修正后的代码
"SELECT Users.Email FROM [Users] WHERE ((Users.Role) Like 'AO' AND (Users.Organization) Like '" & Me.boOrgs & "')"
如果需要做模糊匹配(比如匹配包含Me.boOrgs的任意内容),要加上通配符(Access SQL用*,标准SQL用%,根据你的数据库类型调整):
"SELECT Users.Email FROM [Users] WHERE ((Users.Role) Like 'AO' AND (Users.Organization) Like '*" & Me.boOrgs & "*')"
额外建议
直接拼接变量的写法容易引发SQL注入风险,建议用参数化查询替代,示例:
Dim sql As String Dim cmd As ADODB.Command Set cmd = New ADODB.Command sql = "SELECT Users.Email FROM [Users] WHERE Users.Role Like ? AND Users.Organization Like ?" cmd.CommandText = sql cmd.Parameters.Append cmd.CreateParameter(, adVarChar, adParamInput, 50, "AO") cmd.Parameters.Append cmd.CreateParameter(, adVarChar, adParamInput, 255, Me.boOrgs) ' 后续执行命令逻辑
内容的提问来源于stack exchange,提问作者Justin Valentine
相关产品推荐
相关产品推荐

