Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как лучше написать запрос по поиску возраста  [new]
Kudep
Member

Откуда: From Russia
Сообщений: 146
Всем привет,
Допустим, есть таблица (ID, Name, Age)
Нужно написать хранимку которая может принимать набор диапазонов возрастов.
Думаю, делать это так. Пусть набор диапазонов возрастов передается строкой в формате, например: '2 and 7, 10 and 24, 45 and 55'
В хранимке буду разбивать на строки '2 and 7', '10 and 24', '45 and 55'.
И просто подставлять в динамик sql:
....
where age between str1 or age between str2 or age between str3

Второй вариант подавать на вход хранимки список всех чисел из всех диапазонов: '2,3,4,5,6,710,11,......'
и условие записывать уже так:
....
where age in @ages
Как лучше? может можно еще как-то по-другому?

PS: динамик sql уже используется в хранимке.
9 авг 11, 17:26    [11093279]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше написать запрос по поиску возраста  [new]
iljy
Member

Откуда:
Сообщений: 8711
Kudep,

разбираете строку, записываете начало и конец диапазона во временную таблицу, а в запросе пишете exists(select * from @t t where Age between t.begin and t.end).
Но вобще у вас в принципе неверная схема - возраст имеет свойство меняться со временем.
9 авг 11, 17:30    [11093307]     Ответить | Цитировать Сообщить модератору
 Re: Как лучше написать запрос по поиску возраста  [new]
Glory
Member

Откуда:
Сообщений: 104751
Kudep
Пусть набор диапазонов возрастов передается строкой в формате, например: '2 and 7, 10 and 24, 45 and 55'

А давайте он будет передаваться таблицей, в которой каждая запись будет соответствовать одному диапазону, а два поля - нижней и верхней границе этого диапазона ?
9 авг 11, 17:35    [11093324]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить