Ms access SQL查询以显示记录(如果记录中缺少某些字母) 考虑ABCDEF是字母。

Ms access SQL查询以显示记录(如果记录中缺少某些字母) 考虑ABCDEF是字母。,ms-access,Ms Access,身份证状态备注 1 ABCDEF{结果中不需要显示,因此所有字母都来自ABCDEF组合} 2 FEBACD{结果中无需显示,因此所有字母均来自ABCDEF组合,但顺序不同} 3 CD{仅存在字母C和D,其余字母ABEF缺失,需要在结果中显示此记录 4 ABE{只有字母AB和E存在,其余字母CDF缺失,需要在结果中显示此记录 预期结果: 身份证状态 3 CD 4安倍 请帮助我如何实现这个结果,我是SQL的基础学习者 提前谢谢你的帮助 我使用的Where子句是: WHERE ((InStr([CMD

身份证状态备注 1 ABCDEF{结果中不需要显示,因此所有字母都来自ABCDEF组合} 2 FEBACD{结果中无需显示,因此所有字母均来自ABCDEF组合,但顺序不同}

3 CD{仅存在字母C和D,其余字母ABEF缺失,需要在结果中显示此记录

4 ABE{只有字母AB和E存在,其余字母CDF缺失,需要在结果中显示此记录

预期结果:

身份证状态

3 CD 4安倍

请帮助我如何实现这个结果,我是SQL的基础学习者

提前谢谢你的帮助

我使用的Where子句是:

WHERE ((InStr([CMD_PLANT_MATERIAL Query].MAINTENANCE_STATUS),"D",0) 
Or (InStr([CMD_PLANT_MATERIAL Query].MAINTENANCE_STATUS),"E",0) 
Or (InStr([CMD_PLANT_MATERIAL Query].MAINTENANCE_STATUS),"L",0)); 
错误消息:

I am getting error as "syntax error (comma) in query expression " in WHERE statement. Could some one clarify whats the error?

表达式中的括号太多,缺少InStr的第一个参数,并且没有执行比较,即InStr>0,请尝试以下操作:

WHERE
  InStr(1, [CMD_PLANT_MATERIAL Query].MAINTENANCE_STATUS,"D") > 0 
  Or InStr(1, [CMD_PLANT_MATERIAL Query].MAINTENANCE_STATUS,"E") > 0  
  Or InStr(1, [CMD_PLANT_MATERIAL Query].MAINTENANCE_STATUS,"L") > 0; 
作为一个更为SQL的命令,您可能希望使用显示NOT LIKE用法的答案。

阅读InStr文档,LIKE语句可能会更好地帮助您

如果您想使用InStr,应按照以下步骤进行修复:

  WHERE
  InStr(1, [CMD_PLANT_MATERIAL Query].MAINTENANCE_STATUS,"D") = 0
  Or InStr(1, [CMD_PLANT_MATERIAL Query].MAINTENANCE_STATUS,"E") = 0
  Or InStr(1, [CMD_PLANT_MATERIAL Query].MAINTENANCE_STATUS,"L") = 0;
InStr的第一个参数是搜索位置可以省略,1是第一个字符

此外,InStr返回字符的位置,如果未找到,则返回0,因此在测试是否找到某个内容时,需要将其与0或非0进行比较

或者,您可以使用notlike来获得更简单的语法

WHERE
  [CMD_PLANT_MATERIAL Query].MAINTENANCE_STATUS NOT LIKE "*D*"
  Or [CMD_PLANT_MATERIAL Query].MAINTENANCE_STATUS NOT LIKE "*E*"
  Or [CMD_PLANT_MATERIAL Query].MAINTENANCE_STATUS NOT LIKE "*F*";

其中InStr[CMD\u PLANT\u MATERIAL Query]。维护\u STATUS,D,0或InStr[CMD\u PLANT\u MATERIAL Query]。维护\u STATUS,E,0或InStr[CMD\u PLANT\u MATERIAL Query].MAINTENANCE_STATUS,L,0;我在WHERE语句中的查询表达式中得到语法错误逗号。有人能澄清错误是什么吗?将您的注释添加到问题中,您已经标记了MySQL、Access和SQL Server。您使用的是哪种?我使用的是Access 2016 SQL查询。在进行上述更改后,我发现错误ODBC调用失败…[Microsoft][SQL Server]“locate”不是可识别的内置函数名。104162表名:缺少值{状态字母表:ABCDEF}ID状态1800 ABCDEF 1811 DEFCBA 1911 ABC 1200 DEF 1400 ADEF预期输出:ID状态1911 ABC 1200 DEF 1400 ADEF我正在access 2016中编写SQL查询。如果表记录中缺少特定字母,请指导我显示记录,如果存在特定字母,则无需显示记录。如果尝试使用QL服务器函数在Access中可能不会使用WorkSQLServer本地客户端11-SSDTBIVVS2012XX66EENU.E与Access 2016连接以访问数据库。注意,我所共享的不相似的语法应该在SQLServer中工作,但在执行PASS查询时,需要替换*%,并且@ KrSMIT88忘记通过FI。第一个参数是InStr,忘记了比较我的答案中列出的InStr的结果,因此他的答案不会起作用,只要那不是固定的。