Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.02;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.015 c
3-3797
ldvsubs
2003-09-10 13:50
2003.10.02
Как получить список пользователей подключенных к БД Firebird?


1-3967
Romeo
2003-09-20 09:15
2003.10.02
Функция, ожидающая щелчка мыши на форме


3-3800
asdf
2003-09-11 02:32
2003.10.02
передача данных из grid в excel


1-3846
dm37
2003-09-19 11:05
2003.10.02
Как перехватить текст выводимый на экран в других программах?


1-3864
3APA3A
2003-09-19 03:50
2003.10.02
Меню как в Delphi7