![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск в базе по вложенным записям в одной строке [D7]
Vladimir © (2003-09-11 17:19:00)
Пришлите код программы для поиска в базе данных по вложенным записям!
Например есть запись в строке(12345/4567/13425), где имеются разделители (/) !! Мне например надо найти запись (4567) в этой строке! Каким кодом описать обработчик событий!!?????????
Ответ можно прислать по мылу avtoland@numep.ru. Заранее благодарен!!!!!
MsGuns (2003-09-12 14:01:00) [1]
>Danilka © (12.09.03 12:45) [23]
>вот-так:
WHERE "/"||field||"/" LIKE "%/"||"4567"||"/%"
Во блин !
Весьма конгруэнтно;)
Danilka (2003-09-12 12:45:00) [2]
MsGuns © (12.09.03 12:44)
вот-так:
WHERE "/"||field||"/"LIKE "%/"||"4567"||"/%"
MsGuns (2003-09-12 12:44:00) [3]
>Sandman25 © (12.09.03 12:28) [21]
А вот ни фига !!!
Как на счет значения " 4567/1234578/..." или ".../123/ 4567", т.е. нет открывающих и закрывающих строку слэшей (слэшев ?)
ЗЫ Орех-то растет ;))
Sandman25 (2003-09-12 12:28:00) [4]
[12] Danilka © (12.09.03 12:09)
Только что заметил. Опять я опоздал :)
Sandman25 (2003-09-12 12:27:00) [5]
[19] Sandman25 © (12.09.03 12:26)
Работает, только что проверил :)
Sandman25 (2003-09-12 12:26:00) [6]
Упс2 :)
WHERE "/"||field||"/" LIKE "%/"||"4567"||"/%"
Nikky (2003-09-12 12:26:00) [7]
field like "%/4567/%" or field like "4567/%" or field like "%/4567"
?
Sandman25 (2003-09-12 12:25:00) [8]
Упс.
WHERE "/"||field||"/" LIKE "*/"||"4567"||"/*"
Sandman25 (2003-09-12 12:24:00) [9]
[1] Sandman25 © (11.09.03 17:25)
WHERE "/"||"4567"||"/" LIKE "*/"||field||"/*"
MsGuns (2003-09-12 12:21:00) [10]
Хоть маленький, но родили орешек всей компанией ;)))
Zacho (2003-09-12 12:17:00) [11]
> MsGuns © (12.09.03 12:08) [11]
Пока писал Zacho © (12.09.03 12:10) [13] пропустил этот твой пост :)
Zacho (2003-09-12 12:10:00) [12]
> MsGuns © (12.09.03 12:02) [9]
1. Неизвестно, какая СУБД. Может, там и нет SUBSTRING
2. А если поле хотя бы несколько сотен символов ?
3. Такой запрос все равно вернет и записи с 45678/ и т.п. , а по условию - нужны только /4567/ или 4567/ или /4567
Еще вариант - если СУБД поддерживает UDF и/или ХП, то можно сделать с их помощью.
> Sergey13 © (12.09.03 12:00) [8]
Согласен.
Danilka (2003-09-12 12:09:00) [13]
still © (12.09.03 12:07)
точнее:
where "/"||FLD1||"/" like "%/4567/%"
иначе не попадут первые и последние значения
MsGuns (2003-09-12 12:08:00) [14]
Пардон !
SELECT * FROM TABLE
WHERE (SUBSTRING(FLD1 FROM 1 FOR 5)="4567/") OR
(SUBSTRING(FLD1 FROM 2 FOR 6)="/4567/") OR
(SUBSTRING(FLD1 FROM 3 FOR 6)="/4567/")
Да, блин, неувязочка. Похоже, что всю эту дребедень не получится сделать на строке переменной длины ;(((
still (2003-09-12 12:07:00) [15]
а если LIKE %/4567/% ?
почему ж не поможет?
MsGuns (2003-09-12 12:02:00) [16]
>Zacho © (12.09.03 11:52) [7]
>Потому. Предположим, что есть записи:
123/4567/5673/..
345/45678/9764/..
4567823/76433/8765/..
Ну и что вернет запрос с LIKE %4567% ?
Правильно такое можно сделать только в клиентском приложении, парсингом строки.
Я бы поостерегся излишней категоричности:
SELECT * FROM TABLE
WHERE (SUBSTRING(FLD1 FROM 1 FOR 4)="4567") OR
(SUBSTRING(FLD1 FROM 2 FOR 4)="4567") OR
(SUBSTRING(FLD1 FROM 3 FOR 4)="4567")
...
`<|;ю
Sergey13 (2003-09-12 12:00:00) [17]
2Zacho © (12.09.03 11:52) [7]
А я против парсинга? Нет. Но первоначальный отсев нужен. Иначе парсить запарсишься. 8-) Кроме того в условие поиска / можно включить.
Zacho (2003-09-12 11:52:00) [18]
> Sergey13 © (12.09.03 11:09) [6]
Потому. Предположим, что есть записи:
123/ 4567/5673/..
345/ 45678/9764/..
4567823/76433/8765/..
Ну и что вернет запрос с LIKE %4567% ?
Правильно такое можно сделать только в клиентском приложении, парсингом строки.
Sergey13 (2003-09-12 11:09:00) [19]
MsGuns © (12.09.03 11:00) [5]
>Не поможет
Запись найти не поможет? Почему?
MsGuns (2003-09-12 11:00:00) [20]
>Sergey13 © (12.09.03 09:23) [4]
Не поможет.