Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-3872
krotik
2003-09-18 16:18
2003.10.02
opends60.dll или написание расширенных хранимых процедур


6-4026
Dysan
2003-08-01 15:39
2003.10.02
проблема с FastNet smtp


4-4170
XAMLO
2003-07-31 00:19
2003.10.02
Showmessage на чистом API?


1-3969
killer
2003-09-20 01:35
2003.10.02
Как в Delphi взять побитовую коньюнкцию?


9-3698
VEG
2003-03-29 19:23
2003.10.02
Direct 3D7: 2D рендеринг





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский