我如何让SQL将其评估为2和语句而不是4?左侧和镜头应一起评估。
where LEFT([KeyCode],8) <> 'BOS09864'and len([keycode])>8
and LEFT([KEYCODE],8) <> 'BOS04450'and len([keycode])>8
and [keycode] not in ('STDFJ927','STDFJ928','STDFJ960','STDFJ928NX')
答案 0 :(得分:5)
通过使用NOT IN
SELECT *
FROM YourTable
WHERE LEN([KeyCode])>8
AND LEFT([KeyCode],8) NOT IN ('BOS09864', 'BOS04450')
AND [KeyCode] NOT IN ('STDFJ927','STDFJ928','STDFJ960','STDFJ928NX')
但是,如果您还想检索小于或等于8的那些,请尝试不要在括号内使用LEN和IN条件。
SELECT *
FROM YourTable
WHERE NOT (LEN([KeyCode])>8 AND LEFT([KeyCode],8) IN ('BOS09864', 'BOS04450'))
AND [KeyCode] NOT IN ('STDFJ927','STDFJ928','STDFJ960','STDFJ928NX')
使用2个不喜欢的字符加上下划线将得到与上一个查询相同的结果。
如果KeyCode上有索引,这可能会更快。
但是,当您想拒绝更多这些按键代码时,这是一个糟糕的高尔夫球代码。
SELECT *
FROM YourTable
WHERE [KeyCode] NOT LIKE 'BOS09864_%'
AND [KeyCode] NOT LIKE 'BOS04450_%'
AND [KeyCode] NOT IN ('STDFJ927','STDFJ928','STDFJ960','STDFJ928NX')
答案 1 :(得分:0)
如果您要从结果中排除同一列中的多个值,则可以使用NOT IN列出它们:
LEFT([KEYCODE],8) NOT IN ('BOS09864','BOS04450')