Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизКак задать диапазон в SQL? Найти похожие ветки
← →
Behemoth (2003-10-20 10:52) [0]Простите за глупый вопрос, но как правильнее написать на синтаксисе SQL нечто типа:
select * from table where Field in (50,70..95,100..160,200..500)
← →
Alex_Bredin (2003-10-20 10:57) [1]так и пиши
← →
bushmen (2003-10-20 10:58) [2]Так и правильно, через запятую.
← →
Alex_Bredin (2003-10-20 10:58) [3]+ between для диапазонов
← →
Behemoth (2003-10-20 11:07) [4]Проблема с диапазонами...
Этот запрос идет в цикле, и каждый раз там разное количество диапазонов, поэтому через between писать умучаешся (ужасно некрасиво получится), а через точки не проходит. Может есть другой путь?
← →
Romkin (2003-10-20 11:13) [5]Думаю, возможно через временную таблицу, есть же in (select ...)
← →
Семен Сорокин (2003-10-20 11:13) [6]Этот запрос идет в цикле, и каждый раз там разное количество диапазонов, поэтому через between писать умучаешся (ужасно некрасиво получится), а через точки не проходит. Может есть другой путь?
динамически строй запрос в зависимости от диапазонов.
← →
Alex_Bredin (2003-10-20 11:17) [7]формируй динамически условие запроса
что-то типа query.SQL.add("or (exp1 between "+inttostr(x1)+" and "+inttostr(x2)+")");итп
← →
Behemoth (2003-10-20 11:17) [8]to Romkin: продолжи свою мысль...
to Семен Сорокин: придется если не найдется более красивого решения
← →
MOA (2003-10-20 11:21) [9]Если есть возможность, можно завести временную таблицу, примерно так
DECLARE @Tmp_tab TABLE(
StartVal Integer,
EndVal Integer NULL
... - поле для критериев отбора диапазонов - ведь как-то Вы решаете, какие диапазоны включить для итерации
)
Затем заполнить её, и
select * from table INNER JOIN @Tmp_tab ON (Field >=StarVal) AND ((Field <=EndVal) OR EndVal IS NULL) AND .... - условия для отбора из @Tmp_tab
Кстати, получится быстрее, чем с IN
Удачи!
← →
Anatoly Podgoretsky (2003-10-20 11:25) [10]Это не диапазон, а множество "set of comparison values"
← →
Behemoth (2003-10-20 11:39) [11]to Anatoly Podgoretsky:
к чему ты это.... есть возможность переменной присвоить множество?
← →
Anatoly Podgoretsky (2003-10-20 11:47) [12]Я к тому, что предикат IN оперирует костантным множеством, где элементы разделеных запятыми
The set of comparison values may be either static using a comma-separated list of literals or dynamic using the result set from a subquery
Не знаю, возможно MSSQL и отходит от стандарта, но весьма сомневаюсь.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.03 c