我使用Access MDB错误日志远程维护设备。使用自定义Web浏览器界面,可以再次运行有限的SQL查询表EalInfo。 SQL字符串必须全部在一行上。
使用下面的代码,我可以选择ErrNum包含S_的记录,因为它排除了许多不需要的记录。
Select
DTime,
ErrNum,
Param1,
Param2,
Controller,
vxwErrNo,
Info,
[TmStamp]/86400 AS DAYS_SinceGantryPwrCycle,
[TmStamp]/3600 AS HOURS,
[TmStamp]/60 AS MINs
from EalInfo
where ErrNum like '%S_%'
order by DTime Desc
但是当我有一个额外的过滤器(尝试排除两个常见但无用的错误)时,不会返回任何记录。
where ErrNum like '%S_%'
AND ErrNum <> "S_GAFSTARTUPTASK_DTH_BAD_PARAM"
AND ErrNum <> "S_DTH_USER_ALREADY_REGISTERED"
我的SQL技能非常弱 - 我用谷歌搜索并编写了一些小猫 - 但没有快乐。
由于
答案 0 :(得分:1)
在MS Access中,like
的通配符为*
,而不是%
。所以,我希望你的查询看起来像这样:
where ErrNum like '*S_*' and
ErrNum <> "S_GAFSTARTUPTASK_DTH_BAD_PARAM" and
ErrNum <> "S_DTH_USER_ALREADY_REGISTERED"
我应该注意,所有这些条件都会滤除NULL
的{{1}}值。如果您期望errnum
,则需要明确检查。
您应该将NULL
逻辑简化为:
<>
答案 1 :(得分:0)
未使用Access多年以来我可能错了,但请试试:
SELECT
DTime,
ErrNum,
Param1,
Param2,
Controller,
vxwErrNo,
Info,
[TmStamp]/86400 AS DAYS_SinceGantryPwrCycle,
[TmStamp]/3600 AS HOURS,
[TmStamp]/60 AS MINs
FROM
EalInfo
WHERE
ErrNum LIKE '*S_*'
AND ErrNum <> 'S_GAFSTARTUPTASK_DTH_BAD_PARAM'
AND ErrNum <> 'S_DTH_USER_ALREADY_REGISTERED'
ORDER BY
DTime DESC
答案 2 :(得分:0)
谢谢给所有回答的人。
这是适用于我的代码。
这个自定义/有限的SQL接口要求所有SQL字符串都在一行上 - 但为了便于阅读,我在此尝试将其格式化:
选择
DTime
ErrNum
Param1
Param2
Controller
vxwErrNo
Info
[TmStamp]/86400 AS DAYS_SinceGantryPwrCycle
[TmStamp]/3600 AS HOURS
[TmStamp]/60 AS MINs
来自EalInfo的
其中
(ErrNum like '%S_%') AND
(ErrNum not like '%S_GAFSTARTUPTASK%') AND
(ErrNum not like '%S_DTH_USER_ALREADY%')
DTime Desc的订单