Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.5 MB
Время: 0.02 c
6-4007
lord
2003-08-01 18:49
2003.10.02
myclient : array [1 .. 65535] of TclientSocket;


3-3763
you
2003-09-12 07:05
2003.10.02
как уменьшить размер базы данных???


14-4047
Красная майка
2003-09-04 10:41
2003.10.02
И снова MMP (Moscow Mastak Party ;)!!! Встреча Мастаков в Москве!


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


14-4069
Skywalker
2003-09-15 10:56
2003.10.02
Outlook




   Наверх