|
Вопрос по 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) Тогда хитрое индексирование
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |