Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

Как задать диапазон в 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
1-41373
AndreyA
2003-10-30 15:04
2003.11.13
Подскажите плиз(здым не читать 8-))


1-41392
AlEn
2003-10-30 10:26
2003.11.13
MainMenu в MDI


14-42113
denkop
2003-10-23 00:51
2003.11.13
Купил цифровую видеокамеру, хочу вынуть из неё цифровое видео


1-41590
Vinter
2003-11-04 10:10
2003.11.13
Вапрос по INI файлам


4-42255
w666w
2003-09-15 15:02
2003.11.13
Drag & Drop - без WinAPI никуда...