|
Помогите вернуть подстроку с текстом до и после
|
|||
---|---|---|---|
#18+
Всемогущие знатоки эСКюэЛ! Задача в следующем, необходимо чтобы запрос возвращал строку с предшествующим и последующим текстом. (напр. 20 символов). Ящик: Мускуль 3.23 Перл 5.6 Активстейт Апач 1.3 Виндовс 2000 Возможно такое умеет Мускуль 4.0? Пробовал вот что: $qry_frm_usr; SELECT SUBSTRING(content, LOCATION($qry_frm_usr)-20,40) FROM toc WHERE content LIKE $qry_frm_usr Но тут проблема - если совпавший текст находится ближе чем в 20 символах от границ текста в колонке запрос совпадает, но ничего не возваращет !!??. Помогите справиться с граБлями. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2002, 17:34 |
|
Помогите вернуть подстроку с текстом до и после
|
|||
---|---|---|---|
#18+
Приходится самому отвечать на свой вопрос. Сам себе не поможешь никто тебе не поможет (не совсем правда). Это выражение составлено с помощью NoXcuz с http://forums.devshed.com. $book_queryq - искомая строка. SELECT CONCAT('...',SUBSTRING(text_value, LOCATE($book_queryq,LCASE(text_value))-IF(LOCATE($book_queryq,text_value)-20<1,0,20), LENGTH($book_queryq)+IF(LENGTH(text_value)-LOCATE($book_queryq,text_value)>1,50,1)),'...') FROM tocWHERE text_value LIKE ? Этот запрос возвращает искомую строку с определенным количеством символов до и после нее, иначе говоря в контексте. Недостаток - LOCATE($book_queryq,text_value) вычисляется четыре раза, но на тысяче страниц обработка происходит очень быстро. Кто может лучше - мерси! Успехов всем! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2002, 13:30 |
|
|
start [/forum/topic.php?fid=47&msg=32047295&tid=1856332]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 132ms |
0 / 0 |