Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Базы данных (http://www.flasher.ru/forum/forumdisplay.php?f=22)
-   -   My-SQL_query - help!! (http://www.flasher.ru/forum/showthread.php?t=41784)

amazon 11.01.2003 10:27

My-SQL_query - help!!
 
Друзья! Помогите пожалуйста с my-sql запросом. Задача такая. Делаю поиск по ключевому слову.
Есть форма, в которую юзер вводит ключевое слово. Посылается как переменная $search. Пишу запрос так:
SELECT * FROM novosti WHERE content LIKE '%$search%'
Таким образом получаю все записи, в которых СОДЕРЖИТСЯ $search. Неплохо, НО, мне нужно, чтобы искалось только слово целиком, то есть если ввели "НА", то найти нужно только "НА", а не "НАчало", "каНАл", "весНА" и т.д.
Вторая проблема - LIKE ищет с учетом регистра, а мне нужно, чтобы регистр не учитывался.
Надеюсь, проблему описал понятно.
Буду очень признателен за помощь!!!
PHP&MySQL-Lamer.

Crazy 11.01.2003 12:11

Используй regexp вместо like. И не забудт прочесть соответствующее место в книжке.

worthless 16.01.2003 06:29

Re: My-SQL_query - help!!
 
Цитата:

Оригинал написал(а) amazon
Вторая проблема - LIKE ищет с учетом регистра, а мне нужно, чтобы регистр не учитывался
ILIKE нет в mySQL?

PS Совет начинающему is to положить на mySQL и начать сразу мучать постгрес - он того стоит + переучиваться не придется.

metton 16.01.2003 17:48

2amazon
Так LIKE же и не чувствителен к регистру...

SELECT * FROM novosti WHERE content LIKE '% $search %'

Crazy 16.01.2003 18:09

А он во всех нормальных SQL'ных СУБД нечувствителен к регистру. Регистрозависимый LIKE, насколько я помню, есть исключительно багофича PostgreSQL. :)

WD` 22.01.2003 00:19

из хелпа:
 
Чувствительность к регистру оператора LIKE
В MySQL для чувствительности к регистру всех операторов, сравнивающих символы, в том числе LIKE, необходимо присутствие атрибута BINARY хотя бы в одном месте - либо в типе поля команды CREATE TABLE, либо рядом с именем поля в операторе сравнения. Однако чувствительность к регистру всегда можно подавить, используя функцию TO-LOWER.

Crazy 22.01.2003 01:42

А что, при использовании lower() использование индексов не отвалится?

Pietrovich 18.02.2003 00:23

блин у меня похожая проблема, но с точностью дло наоборот - у меня в подвиндусзном муСКуЛе REGEXP регистрозависимый :(

причем у хостингпровайдера все нормально, а у меня нет :(

мож кто знает в каких настройках это фиксится, а то нужно базу лопатить по сложным regexp'ам и для проверки приходится все на провайдера сливать ... неудобняк...

Crazy 18.02.2003 01:57

Регистронезависимые regexp'ы в MySQL с версии 3.23. Какая версия у тебя?

Pietrovich 18.02.2003 02:28

у меня сейчас 3.23.49 на ВинХР...

Crazy 18.02.2003 03:12

MySQL 3.23.52-nt

Код:

mysql> select * from test1;
+-------+
| title |
+-------+
| Aaaa  |
| aaaa  |
| baaa  |
+-------+
3 rows in set (0.00 sec)

mysql> select * from test1 where title regexp '^[a]+';
+-------+
| title |
+-------+
| Aaaa  |
| aaaa  |
+-------+
2 rows in set (0.00 sec)


Pietrovich 18.02.2003 04:31

гы, у меня не работает :)
выдает только aaaa....


таак... иду качать 3.23.52 ....

З.Ы. она так по дефолту настроена, или надо где-то в конфах это устанавливать?

SandyMAN 09.03.2003 13:42

Цитата:

Таким образом получаю все записи, в которых СОДЕРЖИТСЯ $search. Неплохо, НО, мне нужно, чтобы искалось только слово целиком, то есть если ввели "НА", то найти нужно только "НА", а не "НАчало", "каНАл", "весНА" и т.д.
esli tebe nujno tolko NA, to i delai sootwetstwujushii sapros, bes LIKE

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
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.