Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.47 MB
Время: 0.039 c
1-41411
Saimon
2003-10-29 16:20
2003.11.13
Компилятор...


14-41972
RoLeX
2003-10-17 14:28
2003.11.13
Как сделать сканер открытых портов???


1-41406
Agent[007]
2003-10-29 20:10
2003.11.13
Формы, формы и ещё раз формы...


4-42286
jonni
2003-09-11 04:32
2003.11.13
Structure determination


3-40997
Кабан
2003-10-16 09:51
2003.11.13
Firebird





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский