Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Поиск в таблице mySQL  (Прочитано 21217 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Dracul
Помогающий

ru
Offline Offline
Пол: Мужской

« : 04-04-2005 03:34 » 

Люди, человеки, подскажите:
Вот у меня дело какое, делаю я поиск. и надо, чтобы командой SELECT происходил выбор тех строк, в коих присутствует определенная строка. Как сделать подобную штуку, для одной ячейке, я знаю, но как для всех разом? и можно было бы реализовать еще и так, чтобы выбирались строки, в коих присутствует любое слово из строки?

Заранее благодарю..
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #1 : 04-04-2005 04:37 » 

Ну например так :
Код:
SELECT * FROM table_name WHERE field1 LIKE '%slovo%' OR field2 LIKE '%slovo2%' OR field3 LIKE '%slovo3%'

Либо пользоваться встроеными функциями Мускула для поиска в строке. Они все подробно описаны в мануле по Мускулу, в разделе "String Functions" на www.mysql.com
« Последнее редактирование: 20-12-2007 18:32 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Dracul
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 04-04-2005 11:39 » 

Спасибочки, а как-нибудь записать нельзя, чтобы во всех полях проверка велась одного и того-же?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 04-04-2005 12:30 » new

Увы, низзя!
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dracul
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 04-04-2005 14:50 » 

Мда, жалковато однако, тогда такой еще вопросик, а как бедет выглядеть запрос, в коем будут выбранны только те строки, в коих: определенное поле равено чему-то, и хотя бы одно поле равно тому, что ищут?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 04-04-2005 15:19 » 

Мда, жалковато однако, тогда такой еще вопросик, а как бедет выглядеть запрос, в коем будут выбранны только те строки, в коих: определенное поле равено чему-то, и хотя бы одно поле равно тому, что ищут?
Интересно, а чем твой вопрос отличается от предыдущего?
особенно это "хотя бы"?
В любом случае в запросе должно стоять услвие сравнения
а такие примочки как
...
where <поле> like "%что_то1%" or like "%что_то2%"
не проходят

а ответом может біть следующее
select *
from table
where поле1=чему_то and
(поле2 = то_что_ищут1 or поле2 = то_что_ищут2 or ...)
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dracul
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 04-04-2005 16:34 » 

Спасибо уважаемый!
Просто сии глупые вопросы связанны с моим глубоким незнанием языка sql, если бы вы скинули бы мне ссылочку, где бы было бы хорошее и доступное объяснение (учение) этим примудростям, али книжку какую посоветовали умную и понятную, то я бы был бы и благодарен вам и глупых вопросов не задавал бы, во как.. (то что я сам нашел, либо невозможно читать (на одну "книжечку" у меня вообще подозрение, что она промтом с англицко-го переведена была Жаль ))
А пока, подскажите еще разочек, пожалуйста 0:-)
Символ % я так понимаю, обозначает и любые другие символы..
А вот скажем, как обозначит пробелл, знак пунктуации и начало/конец строки. Пробовал пользоваться управляющими символами из регулярных выражений (взяты мною из книженции по php), вот с пробелами разобрался, а с началом строки никак :`-(
Да еще (мда, это называется дайте пряник и я руку откушу..), а можно ли как-то сделать так, чтобы строка "%что_то%", была нечувствительна к регистру?
Спасибо.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 04-04-2005 17:07 » 

Dracul, http://www.mysql.org/ - здесь родной сайт и доки.
http://www.mysql.ru/ - здесь была переведенная дока, но наверняка старенькая.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 04-04-2005 17:15 » 

М-дя, любая книжка по sql тебе поможет, а можно еще и поучиться вот здесь intuit.ru
в каждой СУБД есть свой набор функций работы со строками

нечувствительность к регистру - стандартная - все привести к одному регистру

один символ заменяет в нужной позици "_"
like "_все" означает искать все, содержащее перед все любой символ
like "все_" означает искать все, содержащее после все любой символ
like "все%" означает искать все, содержащее после  все любое количество символов

что такое начало/конец строки
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dracul
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 04-04-2005 18:47 » 

Под началом строки я имел ввиду место перед первым символом (в моем учебнике php, в разделе регулярных выражений, сказанно, что оно указывается как [:<:]), а конец, место после последнего символа (там же сказанно, что [:>:]).
Так как же мне сделать, чтобы запрос отбирал только строки целиком (в смылсе, чтобы отбор не шел так, чтобы если, например, ищется строка ку, и находилась она не только в слове ку, но и в слове куку)?

А за линки спасибо, лезу смотреть... Круто!
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 04-04-2005 19:36 » 

Dracul, ф-ия LIKE поддерживает только '_' и '%'. Для регулярных выражений POSIX служит ф-ия RLIKE (она же REGEXP).
При использовании регулярных выражений индекс не может быть использован. Может только с конструкцией типа LIKE "строка%" - т.е. начинающиеся на константу. Это замедляет поиск в общирной базе. Если конечно не требуется оптимизация, то можно сделать что угодно.
Обрати так же внимание на FULLTEXT индекс и соотв. ему ф-ии.
« Последнее редактирование: 20-12-2007 18:39 от Алексей1153++ » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines