Оценить и внутри и SQL - PullRequest
0 голосов
/ 14 марта 2019

Как мне получить 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') 

Ответы [ 2 ]

5 голосов
/ 14 марта 2019

Используя 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 NOT LIKE с подчеркиванием даст тот же результат, что и предыдущий запрос.
Это может быть быстрее, если есть индекс на KeyCode.
Но это плохой гольф-код, когда вы хотите отклонить больше этих кодов клавиш.

SELECT *
FROM YourTable
WHERE [KeyCode] NOT LIKE 'BOS09864_%'
  AND [KeyCode] NOT LIKE 'BOS04450_%'
  AND [KeyCode] NOT IN ('STDFJ927','STDFJ928','STDFJ960','STDFJ928NX')
0 голосов
/ 14 марта 2019

Если у вас есть несколько значений из одного столбца, которые вы хотите исключить из своих результатов, вы можете использовать NOT IN, чтобы вывести их из списка:

LEFT([KEYCODE],8) NOT IN ('BOS09864','BOS04450')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...