Форум: "Базы";
Текущий архив: 2003.10.02;
Скачать: [xml.tar.bz2];
ВнизПоиск в базе по вложенным записям в одной строке Найти похожие ветки
← →
Vladimir (2003-09-11 17:19) [0]Пришлите код программы для поиска в базе данных по вложенным записям!
Например есть запись в строке(12345/4567/13425), где имеются разделители (/) !! Мне например надо найти запись (4567) в этой строке! Каким кодом описать обработчик событий!!?????????
Ответ можно прислать по мылу avtoland@numep.ru. Заранее благодарен!!!!!
← →
Sandman25 (2003-09-11 17:25) [1]pos("|" + StrWhat + "|", "|" + StrWhere + "|")
← →
Johnmen (2003-09-11 17:25) [2]Может тебе сразу 10 тонн баков выслать ?
Почитай здесь http://ln.com.ua/~openxs/articles/smart-questions-ru.html
← →
Vlad (2003-09-11 17:27) [3]Щас все бросим, будем тебе программу писать.
← →
Sergey13 (2003-09-12 09:23) [4]2Vladimir (11.09.03 17:19)
Ну насчет "прислать" ты погорячился. 8-) Тебе поможет SQL запрос с LIKE %"твое значение"%
← →
MsGuns (2003-09-12 11:00) [5]>Sergey13 © (12.09.03 09:23) [4]
Не поможет.
← →
Sergey13 (2003-09-12 11:09) [6]MsGuns © (12.09.03 11:00) [5]
>Не поможет
Запись найти не поможет? Почему?
← →
Zacho (2003-09-12 11:52) [7]
> Sergey13 © (12.09.03 11:09) [6]
Потому. Предположим, что есть записи:
123/ 4567/5673/..
345/ 45678/9764/..
4567823/76433/8765/..
Ну и что вернет запрос с LIKE %4567% ?
Правильно такое можно сделать только в клиентском приложении, парсингом строки.
← →
Sergey13 (2003-09-12 12:00) [8]2Zacho © (12.09.03 11:52) [7]
А я против парсинга? Нет. Но первоначальный отсев нужен. Иначе парсить запарсишься. 8-) Кроме того в условие поиска / можно включить.
← →
MsGuns (2003-09-12 12:02) [9]>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")
...
`<|;ю
← →
still (2003-09-12 12:07) [10]а если LIKE %/4567/% ?
почему ж не поможет?
← →
MsGuns (2003-09-12 12:08) [11]Пардон !
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/")
Да, блин, неувязочка. Похоже, что всю эту дребедень не получится сделать на строке переменной длины ;(((
← →
Danilka (2003-09-12 12:09) [12]still © (12.09.03 12:07)
точнее:
where "/"||FLD1||"/" like "%/4567/%"
иначе не попадут первые и последние значения
← →
Zacho (2003-09-12 12:10) [13]
> MsGuns © (12.09.03 12:02) [9]
1. Неизвестно, какая СУБД. Может, там и нет SUBSTRING
2. А если поле хотя бы несколько сотен символов ?
3. Такой запрос все равно вернет и записи с 45678/ и т.п. , а по условию - нужны только /4567/ или 4567/ или /4567
Еще вариант - если СУБД поддерживает UDF и/или ХП, то можно сделать с их помощью.
> Sergey13 © (12.09.03 12:00) [8]
Согласен.
← →
Zacho (2003-09-12 12:17) [14]
> MsGuns © (12.09.03 12:08) [11]
Пока писал Zacho © (12.09.03 12:10) [13] пропустил этот твой пост :)
← →
MsGuns (2003-09-12 12:21) [15]Хоть маленький, но родили орешек всей компанией ;)))
← →
Sandman25 (2003-09-12 12:24) [16][1] Sandman25 © (11.09.03 17:25)
WHERE "/"||"4567"||"/" LIKE "*/"||field||"/*"
← →
Sandman25 (2003-09-12 12:25) [17]Упс.
WHERE "/"||field||"/" LIKE "*/"||"4567"||"/*"
← →
Nikky (2003-09-12 12:26) [18]field like "%/4567/%" or field like "4567/%" or field like "%/4567"
?
← →
Sandman25 (2003-09-12 12:26) [19]Упс2 :)
WHERE "/"||field||"/" LIKE "%/"||"4567"||"/%"
← →
Sandman25 (2003-09-12 12:27) [20][19] Sandman25 © (12.09.03 12:26)
Работает, только что проверил :)
← →
Sandman25 (2003-09-12 12:28) [21][12] Danilka © (12.09.03 12:09)
Только что заметил. Опять я опоздал :)
← →
MsGuns (2003-09-12 12:44) [22]>Sandman25 © (12.09.03 12:28) [21]
А вот ни фига !!!
Как на счет значения " 4567/1234578/..." или ".../123/ 4567", т.е. нет открывающих и закрывающих строку слэшей (слэшев ?)
ЗЫ Орех-то растет ;))
← →
Danilka (2003-09-12 12:45) [23]MsGuns © (12.09.03 12:44)
вот-так:
WHERE "/"||field||"/" LIKE "%/"||"4567"||"/%"
← →
MsGuns (2003-09-12 14:01) [24]>Danilka © (12.09.03 12:45) [23]
>вот-так:
WHERE "/"||field||"/" LIKE "%/"||"4567"||"/%"
Во блин !
Весьма конгруэнтно ;)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.10.02;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.012 c