Имя: Пароль:
1C
1С v8
Как запросом выбрать телефоны?
0 PR
 
24.06.14
16:16
1. Есть простое решение... 80% (4)
2. Свое мнение 20% (1)
3. Нет простого решения... 0% (0)
Всего мнений: 5

В базе в некой таблице, например таблице "Телефоны" с единственным полем "Телефон" типа строка (1000) хранятся телефоны.
В телефоне, кроме цифр могут присутствовать символы "(", ")", "-" и " ".
Как запросом выбрать все номера телефонов по поисковой строке "123 4 5"?
То есть строка поиска для ПОДОБНО должна быть такая "%1[(,),-, ,]2[(,),-, ,]3%4%5%".
[(,),-, ,] — это символ "(", ")", "-", " " или отсутствие символа.

Вопрос. Как задать в меске [(,),-, ,] возможность отсутствия символа?
1 RomanYS
 
24.06.14
16:34
или подобно %123%...
или подобно %1[]23%...
или подобно %12[]3%...

Свое мнение
2 vicof
 
24.06.14
16:35
А я бы регулярным выражениям скормил номера
3 PR
 
24.06.14
16:36
(1) Не подойдет.
Блоков цифр может быть много.
Например, 12 34 56 78.
4 RomanYS
 
24.06.14
16:40
(3) т.е. внутри блока между цифрами могут быть(не быть) по одному разделителю, а между блоками все что угодно?
5 hhhh
 
24.06.14
16:43
(3) может два ПОДОБНО? в одной проверять на запрещенные символы, а в другой цифры
6 mikecool
 
24.06.14
16:43
вроде регулярки уже скулем обрабатываются, прямой запрос к таблице, осталось только рег выражение написать
7 pavelul73
 
24.06.14
16:48
а может сначала привести номера к одному формату? убрать все лишнее, наложить маску, когда вводят новый номер телефона, после этого вытащить номера не составит проблем
8 vicof
 
24.06.14
16:49
(7) +1
9 acsent
 
24.06.14
16:55
добавить в таблицу поле и привести номера к единому виду
10 ptiz
 
24.06.14
16:58
Хранить в базе без лишних символов.

Есть простое решение...
11 PR
 
24.06.14
17:06
(4)Да
12 PR
 
24.06.14
17:06
(5) Как?
13 PR
 
24.06.14
17:07
(7) Нет
14 APXi
 
24.06.14
17:15
хранить без спец символов, форматировать при выводе.

Есть простое решение...
15 RomanYS
 
24.06.14
17:30
(11) т.е. 2 разделителя подряд быть не может, например: ") "?
в любом случае правильные идеи в (7) и (9)
16 PR
 
24.06.14
17:32
(15) >>т.е. 2 разделителя подряд быть не может, например: ") "?
Нет

>>в любом случае правильные идеи в (7) и (9)
Я не спрашиваю, как решить эту задачу, я спрашиваю, можно ли и как получить в запросе данные при существующей таблице.
17 RomanYS
 
24.06.14
17:33
Как вариант запросом выбирать "%1%2%3%4%5%6%7%8%", а уже в выборке проверять повторно. Вряд ли в выборку будет попадать слишком много строк
18 PR
 
24.06.14
17:35
(17) Не вариант. Нужно запросом. Динамический список, понимаешь :))
19 RomanYS
 
24.06.14
17:39
(16)
>>Я не спрашиваю, как решить эту задачу, я спрашиваю, можно ли и как получить в запросе данные при существующей таблице.

Это реальная задача или типа упражнения для кандидатов?

Если реальная, то решение в (9)

Если "Нужно запросом" - можно запрос формировать динамически(программно) по типу (0) - будет тормозно и глючно
20 hhhh
 
24.06.14
17:40
(18) тогда (17), а в выборке ничего не проверять.
21 PR
 
24.06.14
17:56
(19) Реальная, но (9) не хочется.
22 PR
 
24.06.14
17:57
(20) И что? Пусть делает неправильно?
23 acsent
 
24.06.14
18:00
Только не забывай народную мудрость
----------------
Если у вас есть проблема, и вы собираетесь её решать с помощью регулярных выражений, тогда у вас будет уже две проблемы
24 PR
 
24.06.14
18:13
(23) Да я и не собирался, собственно
25 acsent
 
24.06.14
18:14
(24) А что же ты тогда спрашивал в (0)
26 PR
 
24.06.14
18:17
(25) А, пардон, тупанул, ну да, собираюсь.
А в чем проблема тогда?
27 acsent
 
24.06.14
18:18
(26) да не в чем. Просто народная мудрость на то и народная мудрость )))
28 vqwy
 
24.06.14
18:19
Клиентскую базу копируешь себе?
29 PR
 
24.06.14
18:23
(28) Эээ... это мне?
30 RomanYS
 
24.06.14
19:11
(21)  сильно сомневаюсь, что кто-нибудь так ищет телефоны. типа я помню 5 цифр из 10 и их порядок?
эта я к тому, что задача мало похожа на реальную
31 PR
 
25.06.14
13:43
(30) Ну как всегда. Не знаешь, как решить, скажи что-нить важное на тему того, как ты что-то там считаешь.
32 dj_serega
 
25.06.14
14:08
(10) присоединяюсь

Есть простое решение...
33 tdm
 
25.06.14
14:14
контекстный поиск платформы 1с)))

Есть простое решение...
34 PR
 
26.06.14
14:09
Какие все умные, мне бы в фирму таких.
Даже задание ставить не придется, сами все-равно все сделают в лучшем виде.
Правда не то, что просят, но кого беспокоят такие мелочи, да? :))