![]() |
My-SQL_query - help!!
Друзья! Помогите пожалуйста с my-sql запросом. Задача такая. Делаю поиск по ключевому слову.
Есть форма, в которую юзер вводит ключевое слово. Посылается как переменная $search. Пишу запрос так: SELECT * FROM novosti WHERE content LIKE '%$search%' Таким образом получаю все записи, в которых СОДЕРЖИТСЯ $search. Неплохо, НО, мне нужно, чтобы искалось только слово целиком, то есть если ввели "НА", то найти нужно только "НА", а не "НАчало", "каНАл", "весНА" и т.д. Вторая проблема - LIKE ищет с учетом регистра, а мне нужно, чтобы регистр не учитывался. Надеюсь, проблему описал понятно. Буду очень признателен за помощь!!! PHP&MySQL-Lamer. |
Используй regexp вместо like. И не забудт прочесть соответствующее место в книжке.
|
Re: My-SQL_query - help!!
Цитата:
PS Совет начинающему is to положить на mySQL и начать сразу мучать постгрес - он того стоит + переучиваться не придется. |
2amazon
Так LIKE же и не чувствителен к регистру... SELECT * FROM novosti WHERE content LIKE '% $search %' |
А он во всех нормальных SQL'ных СУБД нечувствителен к регистру. Регистрозависимый LIKE, насколько я помню, есть исключительно багофича PostgreSQL. :)
|
из хелпа:
Чувствительность к регистру оператора LIKE
В MySQL для чувствительности к регистру всех операторов, сравнивающих символы, в том числе LIKE, необходимо присутствие атрибута BINARY хотя бы в одном месте - либо в типе поля команды CREATE TABLE, либо рядом с именем поля в операторе сравнения. Однако чувствительность к регистру всегда можно подавить, используя функцию TO-LOWER. |
А что, при использовании lower() использование индексов не отвалится?
|
блин у меня похожая проблема, но с точностью дло наоборот - у меня в подвиндусзном муСКуЛе REGEXP регистрозависимый :(
причем у хостингпровайдера все нормально, а у меня нет :( мож кто знает в каких настройках это фиксится, а то нужно базу лопатить по сложным regexp'ам и для проверки приходится все на провайдера сливать ... неудобняк... |
Регистронезависимые regexp'ы в MySQL с версии 3.23. Какая версия у тебя?
|
у меня сейчас 3.23.49 на ВинХР...
|
MySQL 3.23.52-nt
Код:
mysql> select * from test1; |
гы, у меня не работает :)
выдает только aaaa.... таак... иду качать 3.23.52 .... З.Ы. она так по дефолту настроена, или надо где-то в конфах это устанавливать? |
Цитата:
select * from tabla where name = 'NA'; === naschet registrosawisimosti: rekomenduju w DB tablice delat' dve kolonki s lowercase textom i tot je text w normalnom predstawlenii 'dududu' i 'DuDuDu' eto bolshe mesta saimet, no rabotat budet bistree chem s regexp (IMHO) |
| Часовой пояс GMT +4, время: 03:42. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.