|
Значение между
|
|||
---|---|---|---|
#18+
Привет. Подскажите как проверить есть ли телефон из таблицы 1 791231231212 в промежутках между полем phone1 (значение 79000000000) и phone2 (значение 79000061999) в таблице 2 Таких строк со значениями 7929 Если делать case то ms sql вылетает, потому что слишком много строк в запросе. Нужен вывод: поле phone и значение Y(если есть) или N (если нет) В аттаче таблица с промежутками чтобы было понимание ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2020, 20:26 |
|
Значение между
|
|||
---|---|---|---|
#18+
Palkin Если делать case то ms sql вылетает, потому что слишком много строк в запросе. Palkin Таких строк со значениями 7929 в любом случае 791 больше 790, так что не попадает ни одной строки Лучше вместо непонятного файла выложите сюда запрос, и пяток строк данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2020, 21:10 |
|
Значение между
|
|||
---|---|---|---|
#18+
alexeyvg Palkin Если делать case то ms sql вылетает, потому что слишком много строк в запросе. Palkin Таких строк со значениями 7929 в любом случае 791 больше 790, так что не попадает ни одной строки Лучше вместо непонятного файла выложите сюда запрос, и пяток строк данных. С данными одна таблица с телефонами, которые нужно проверить на валидность, если телефон есть между значениями, которые я прикрепил в таблице то он валидный. Вот пример запроса SELECT phone, case when phone between 79000000000 and 79000061999 then 'y' when phone between 79000062000 and 79000062999 then 'y' when phone between 79000063000 and 79000099999 then 'y' when phone between 79000100000 and 79000199999 then 'y' when phone between 79000200000 and 79000299999 then 'y' и так 7 тысяч строк else 'n' End from [dbo].[all_phopne] ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2020, 21:47 |
|
Значение между
|
|||
---|---|---|---|
#18+
Palkin, закинь эти диапазоны во времянку, и Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2020, 22:04 |
|
Значение между
|
|||
---|---|---|---|
#18+
Palkin С данными одна таблица с телефонами, которые нужно проверить на валидность, если телефон есть между значениями, которые я прикрепил в таблице то он валидный. Вот пример запроса Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Или можно написать по другому, если нужна информация, к какому именно диапазону принадлежит телефон. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2020, 22:07 |
|
Значение между
|
|||
---|---|---|---|
#18+
court закинь эти диапазоны во времянку, и ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2020, 22:08 |
|
Значение между
|
|||
---|---|---|---|
#18+
alexeyvg Palkin С данными одна таблица с телефонами, которые нужно проверить на валидность, если телефон есть между значениями, которые я прикрепил в таблице то он валидный. Вот пример запроса Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Или можно написать по другому, если нужна информация, к какому именно диапазону принадлежит телефон. Не получается, везде выводит n Не знаю как тут картинки под спойлер прятать Тут скрин https://yadi.sk/i/3ay1sTS5NwypAw ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2020, 22:38 |
|
Значение между
|
|||
---|---|---|---|
#18+
alexeyvg court закинь эти диапазоны во времянку, и А вот так выглядят таблицы: https://yadi.sk/i/3EXLwqv4Y8ng0g ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2020, 22:46 |
|
Значение между
|
|||
---|---|---|---|
#18+
Palkin, напишите левый джойн с таблицей диапазонов, если первая граница диапазона not null, то пишите Y, иначе N. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2020, 22:49 |
|
Значение между
|
|||
---|---|---|---|
#18+
Владислав Колосов Palkin, напишите левый джойн с таблицей диапазонов, если первая граница диапазона not null, то пишите Y, иначе N. телефон должен проверяться в дипазоне. Например мне нужно понять есть ли цифра 5 в диапазоне 1-10 10-20 20-30 30-40 ....... Цифра 5 есть в 1 диапазоне, соответсвенно ответ y Только как вот between сделать внутри диапазона и если нет в этом диапазоне, то перейти на следющий. Превдолагаю что нужно использовать lag и row_number, но как прикрутить ума не приложу ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2020, 22:54 |
|
Значение между
|
|||
---|---|---|---|
#18+
Palkin Не получается, везде выводит n Ясен пень, ведь у вас проверка не верная, судя по картинке: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2020, 06:42 |
|
Значение между
|
|||
---|---|---|---|
#18+
skyANA Palkin Не получается, везде выводит n Ясен пень, ведь у вас проверка не верная, судя по картинке: Код: sql 1.
Да, все получилось, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2020, 09:16 |
|
Значение между
|
|||
---|---|---|---|
#18+
а через функцию не пробовали ? ) вдруг быстрее выйдет чем джоины ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2020, 10:14 |
|
Значение между
|
|||
---|---|---|---|
#18+
и зачем вам все 7000 строк, может лишние отсечь перед проверкой, все те что до 79000299999, я так понимаю поле числовое...индексы есть какие то? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2020, 10:22 |
|
Значение между
|
|||
---|---|---|---|
#18+
[quot Palkin#22211111] Вопрос, чем это: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Отличается от этого: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
??? Я так подозреваю, что один большой диапазон, зачем то, разбит на кучу маленьких. Допускаю что для каких то других процессов это может быть необходимо, но в данном случае гораздо оптимальнее сначала слить такие непрерывные диапазоны в один большой и уже его проверять битвином. А если у вас идёт проверка "Телефон российских операторов сотовой связи" = "y", "Телефон операторов сотовой связи других стран" = "n", то ещё лучше проверять вообще только первые 4 цифры ибо "Телефон российских операторов сотовой связи" это "+7 (9NN) XXX XX XX"/ ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2020, 11:14 |
|
Значение между
|
|||
---|---|---|---|
#18+
Palkin Не получается, везде выводит n ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2020, 11:15 |
|
Значение между
|
|||
---|---|---|---|
#18+
Народ, у кого есть такая же потребность - решил сл. кодом: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
Смысл всего этого: качаю актуальный список телефонов на сайте минкомсвязи https://rossvyaz.gov.ru/deyatelnost/resurs-numeracii/vypiska-iz-reestra-sistemy-i-plana-numeracii и с помощью запроса выше, смотрю валиден ли телефон. Это нужно для того чтобы в клиентскую базу попадали верные телефоны ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 01:41 |
|
Значение между
|
|||
---|---|---|---|
#18+
Palkin качаю актуальный список телефонов на сайте минкомсвязи https://rossvyaz.gov.ru/deyatelnost/resurs-numeracii/vypiska-iz-reestra-sistemy-i-plana-numeracii и с помощью запроса выше, смотрю валиден ли телефон. Хотя на валидность он наверняка достаточно достоверен. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 11:45 |
|
Значение между
|
|||
---|---|---|---|
#18+
alexeyvg, Оператор не важен, главное чтобы номер валиден был. Т.е. когда клиент регистрируется и пытается вбить левый номер, система будет ругаться и даст ему ввести невалидный номер, тем самым не давай "засираться" базе недействительными телефонами. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 12:20 |
|
Значение между
|
|||
---|---|---|---|
#18+
Palkin, автортелефон должен проверяться в дипазоне. Например мне нужно понять есть ли цифра 5 в диапазоне 1-10 10-20 20-30 30-40 ....... Цифра 5 есть в 1 диапазоне, соответсвенно ответ y Не надо никуда переходить, просмотрите все диапазоны и используйте max (Y/N). Если номер попал хотя бы в один из диапазонов получите Y. Y > N. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 14:15 |
|
Значение между
|
|||
---|---|---|---|
#18+
Владислав Колосов используйте max ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 21:28 |
|
Значение между
|
|||
---|---|---|---|
#18+
Palkin alexeyvg, Оператор не важен, главное чтобы номер валиден был. Т.е. когда клиент регистрируется и пытается вбить левый номер, система будет ругаться и даст ему ввести невалидный номер, тем самым не давай "засираться" базе недействительными телефонами. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 22:09 |
|
Значение между
|
|||
---|---|---|---|
#18+
Palkin Владислав Колосов Palkin, напишите левый джойн с таблицей диапазонов, если первая граница диапазона not null, то пишите Y, иначе N. телефон должен проверяться в дипазоне. Например мне нужно понять есть ли цифра 5 в диапазоне 1-10 10-20 20-30 30-40 ....... Цифра 5 есть в 1 диапазоне, соответсвенно ответ y Только как вот between сделать внутри диапазона и если нет в этом диапазоне, то перейти на следющий. Превдолагаю что нужно использовать lag и row_number, но как прикрутить ума не приложу а если в диапазоне 1 - 40, это не то же самое? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 22:52 |
|
Значение между
|
|||
---|---|---|---|
#18+
Palkin SELECT phone, case when phone between 79000000000 and 79000061999 then 'y' when phone between 79000062000 and 79000062999 then 'y' when phone between 79000063000 and 79000099999 then 'y' when phone between 79000100000 and 79000199999 then 'y' when phone between 79000200000 and 79000299999 then 'y' и так 7 тысяч строк ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2020, 01:16 |
|
|
start [/forum/topic.php?fid=46&msg=40011622&tid=1685500]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 174ms |
0 / 0 |