Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск в базе по вложенным записям в одной строке [D7]


Страницы:   1 2

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]

Не поможет.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо