SQL-запрос нескольких диапазонов без использования нескольких предложений ИЛИ (вложенность LIKE, BETWEEN)

Обычно мне приходится запрашивать очень большую таблицу для нескольких переменных с множеством условий для каждой переменной. Часто переменную необходимо запрашивать для нескольких диапазонов. Например, мне могут понадобиться все записи VAR_1, где VAR_1 находится в диапазоне 200–300, 350–400, 450–500.

Обычно я бы написал это следующим образом, но мне сказали, что использование IN()вместо множественных OR было бы намного эффективнее.

SELECT * FROM table
WHERE VAR_1 BETWEEN '200' AND '300' OR
      VAR_1 BETWEEN '350' AND '400' OR
      VAR_1 BETWEEN '450' AND '500'

Есть ли способ сжать эту информацию и избавиться от ORпутем вложения предложений LIKEили BETWEENв IN() ? Что-то вроде:

ГДЕ VAR_1 IN (МЕЖДУ '200' И '300', МЕЖДУ '350' И '400', МЕЖДУ '450' И '500')

или

ГДЕ VAR_1 IN ('[200-300 ]','[350-400]','[450-500]')

Я пробовал такие вещи, но синтаксис явно неверен. Любые идеи или направления, на которые вы можете мне указать, были бы замечательными, но все еще очень новыми для SQL.

5
задан Widor 31 May 2012 в 13:08
поделиться