例如:考虑ABCDEF是字母。
ID状态备注 1 ABCDEF {无需显示结果,因此所有字母都存在(来自ABCDEF组合)} 2 FEBACD {无需显示结果,因此所有字母都存在(来自ABCDEF组合,但序列不同)}
3 CD {仅存在字母C和D,剩余字母(缺少ABEF,此记录需要显示在结果中)
4)ABE {仅存在字母AB和E,剩余字母(缺少CDF,此记录需要显示在结果中)。
预期结果:
ID状态
3 CD 4 ABE
请帮助我如何实现这个结果,我是SQL的基本学习者。
提前感谢您的帮助。
我使用的条款是:
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?
答案 0 :(得分:1)
请继续阅读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进行比较。
或者,您可以使用NOT LIKE,以获得更简单的语法。
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*";
答案 1 :(得分:0)
你的表达式中有太多括号,缺少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
的答案。