Имя: Пароль:
1C
1С v8
Вопрос по SQL запросу в частности LIKE (ПОДОБНО)
,
0 vl_programmer
 
24.04.13
15:49
Как многим известно в sql
%-Любая строка длиной от нуля и более символов.
[]-Любой одиночный символ, содержащийся в диапазоне ([a-z]) или наборе ([0-9]).
У меня в таблице есть строковые данные:
ok47
o-k-4-7-9
ok#476
o@k#4!7
o@#k#47   //Эту не выдаем запросом потому что между искомыми символами только 0 или 1 знак

Запросом хочу  при указанной строке "ok47" получить:

ok47
o-k-4-7-9
ok#476
o@k#4!7

Собственно как так сделать условие чтоб отсечь на уровне запроса все не подходящие варианты?
1 vl_programmer
 
24.04.13
15:50
Отсекать после получения регялярками или еще чем то не пойдет в базе более 20 миллионов таких строк.
2 Ёпрст
 
24.04.13
15:51
like %o%k%4%7%
3 НЕА123
 
24.04.13
15:51
%o%k%4%7%
4 Ёпрст
 
24.04.13
15:52
точнее
   pole like %o%
and pole like %k%
and pole like %4%
and pole like %7%
5 vl_programmer
 
24.04.13
15:52
(2),(3) вернет и эту строку тоже o@#k#47
6 Ёпрст
 
24.04.13
15:53
это ежели в случайном порядке символы.
7 Ёпрст
 
24.04.13
15:53
(5) ага
8 mkanaev
 
24.04.13
15:53
%o_k_4_7%
9 vl_programmer
 
24.04.13
15:54
(7) не вернет ok47
10 vl_programmer
 
24.04.13
15:55
_ говорит что символ должен быть обязательно
11 mkanaev
 
24.04.13
15:55
union
12 Ёпрст
 
24.04.13
15:55
Или тебе как в (8) надо ? Что б между ними было определнное количество символов  тока ?
13 vl_programmer
 
24.04.13
15:56
(12) между тем что я ввожу поиск в базе разрешено взять между ними либо 0 либо 1 символ
14 Defender aka LINN
 
24.04.13
15:56
А в "o-k-4-7-9", типа, по 2 символа между искомыми?
15 mkanaev
 
24.04.13
15:56
%o_k_4_7%
union
%ok_4_7%
union
%o_k4_7%
union
%o_k_47%
union
%ok_47%
union
%ok4_7%
union
...
16 Ёпрст
 
24.04.13
15:57
Каков критерий поиска ?, почему вот эту выдаем
ok#476
а эту нет ?
o@#k#47 ?
17 vl_programmer
 
24.04.13
15:57
(16) o@#k#47   //Эту не выдаем запросом потому что между искомыми символами только 0 или 1 знак
18 НЕА123
 
24.04.13
15:58
если в лоб

%o_k_4_7% ИЛИ
%ok_4_7% ИЛИ
%ok4_7% ИЛИ
%ok47%
и тд
ну это,собственно, (11)
19 vl_programmer
 
24.04.13
15:58
@#$&* -спец символы который известны зарание
20 vl_programmer
 
24.04.13
15:58
попробую с union
21 Ёпрст
 
24.04.13
16:00
>>>между искомыми символами только 0 или 1 знак

расшифруй, не осилил - какой знак ?
22 vl_programmer
 
24.04.13
16:05
(21) ну я имел виду что ввожу строку типа ok47 разбиваем ее на символы  "o" "k" "4" "7"  вот между ними допускается 0- символов (то есть нету) либо 1 символ из заранее известного перечня.
23 Ёпрст
 
24.04.13
16:07
(22) порядок следования важен ?
24 Ёпрст
 
24.04.13
16:08
т.е
7ok4 должно попасть ?
25 Defender aka LINN
 
24.04.13
16:08
(22) Еще раз: А в "o-k-4-7-9", типа, по 2 символа между искомыми?
26 vl_programmer
 
24.04.13
16:10
(24) нет порядок важен
27 vl_programmer
 
24.04.13
16:10
(25) какие 2 символа ? в начале и в конце %
28 Ёпрст
 
24.04.13
16:24
Тогда как в (18) - перечислить все комбинаци разве что
29 vl_programmer
 
24.04.13
16:25
(28) похоже на то. Щас попробую автоматом с генерировать такое условия по результату отпишусь. Всем спасибо.
30 vl_programmer
 
24.04.13
17:13
Плохой вариант у меня строка длиной в 25 символов для 25 символом с генерированных условий будет  8388608 комбинаций при этом сами условия генерируются не быстро соответственно запрос получается космический.
31 ЧеловекДуши
 
24.04.13
17:42
(30)Все таки как ни крути

http://www.sql-tutorial.ru/ru/book_predicate_like.html

символ процента (%) заменяет последовательность любых символов (число символов в последовательности может быть от 0 и более) в проверяемом значении.
32 ЧеловекДуши
 
24.04.13
17:45
+ "Если попытаться автоматизировать хаос, то получится автоматизированный хаос"
33 Defender aka LINN
 
24.04.13
22:12
(27) То есть, 15/вторник?
34 mistеr
 
24.04.13
22:19
(0) Предикат LIKE не предназначен для такого типа поиска. Ни в SQL, ни в 1С.

Правильное с вер. 90% решение исходной задачи  - почистить ваши данные.
35 rs_trade
 
24.04.13
22:25
если разовая задачка можно через mssms запросом с регулярками обработать данные и разложить в табличку
36 vl_programmer
 
25.04.13
10:41
(34) (35) Делать это с TecDoc не очень хорошая мысль...
37 vl_programmer
 
25.04.13
10:42
можно закрыть тему...
38 mistеr
 
25.04.13
11:05
(36) Тогда хитрое индексирование
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.