Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запрос без учёта регистра 
V
    Опции темы
bars80080
Дата 8.2.2008, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



вопрос такой,
надо выбрать строки в которых совпадает поле, но без учёта регистра, т.е.
в поле значение 
Иван Петрович,
нужно чтобы откликалось и на иван петрович

запрос был такой
Код

$sql = 'select * from table where name regexp "'.$name.'"';
нашёл в гуглах такой вариант
Код

$sql = 'select * from table where (locate(lower("'.$name.'"), lower(name))>0)';
но он тоже обращает внимание на регистр

на форуме что-то не нашёл...

п.с. наверно можно как-то с регулярками, но опять сыплю голову пеплом, плохо у меня с ними....

Это сообщение отредактировал(а) bars80080 - 8.2.2008, 16:52
PM MAIL WWW   Вверх
Glip
Дата 8.2.2008, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 1
Всего: 18



ilike 

??


--------------------
user posted image
PM MAIL   Вверх
bars80080
Дата 8.2.2008, 17:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



что-то даже близко не помогает

Код

$sql = 'select * from table where name like "'.$name.'"';
$sql = 'select * from table where name like ("'.$name.'")';

отрабатывают только как name="$name"

ilike - вообще похоже дают ошибку

Это сообщение отредактировал(а) bars80080 - 8.2.2008, 17:25
PM MAIL WWW   Вверх
slang
Дата 8.2.2008, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 455
Регистрация: 7.3.2004

Репутация: 1
Всего: 0



Цитата(bars80080 @  8.2.2008,  17:25 Найти цитируемый пост)

Код

$sql = 'select * from table where name like "'.$name.'"';


нужно писать
Код

$sql = 'select * from table where name like "%'.$name.'%"';



--------------------
Запчасти на иномарки www.avtograd55.ru.
Если есть время - зайдите и посоветуйте что исправить и что доработать.
PM MAIL WWW ICQ   Вверх
bars80080
Дата 8.2.2008, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



о, Слэнг, абсолютный респект тебе
+1
PM MAIL WWW   Вверх
GeneralElectric
Дата 10.2.2008, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 2
Всего: 16



Вообще-то, регистронезависимый поиск зависит от настроек кодировки БД, а не от синтаксиса запроса.
По умолчанию поиск в БД именно регистроНЕзависимый. А вот чтобы сделать его зависимым, в мускуле версии 4.1+ надо всего лишь задать сollation_connection, а в предыдущих надо сильно извращаться.

Все вышеописанное, разумеется, относится к случаю, когда кодировки в бд настроены правильно. Впрочем, в противном случае не будет правильно работать вообще никакой поиск.
PM MAIL   Вверх
bars80080
Дата 11.2.2008, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



абсолютно согласен,

стрёмная ситуация, когда у меня учитывался регистр, никаких доп.настроек я не совершал, а открываю документацию - везде пишут, что на самом деле регистр не учитывается

правда mysql вроде 3.23.56
PM MAIL WWW   Вверх
skyboy
Дата 24.5.2008, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



тема стара, но есть все же затык, который лучше упомянуть.
REGEXP некорректно работает с многобайтными кодировками. Выражается некорректность в том, что независимо от collation сравнение будет "регистрозависимым" - одинаковые символы в разном регистре считаются различными.
Цитата

The REGEXP and RLIKE  operators work in byte-wise fashion, so they are not multi-byte safe and may produce unexpected results with multi-byte character sets. In addition, these operators compare characters by their byte values and accented characters may not compare as equal even if a given collation treats them as equal.

источник


Это сообщение отредактировал(а) skyboy - 24.5.2008, 20:41
PM MAIL   Вверх
bars80080
Дата 26.5.2008, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



т.е. затычки нет?

кстати, статья относится к пятому МуСКЛ, такая вещь сохраняется и на этой версии?

где бы посмотреть, какие кодировки многобайтные, какие нет?
PM MAIL WWW   Вверх
skyboy
Дата 26.5.2008, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(bars80080 @  26.5.2008,  08:36 Найти цитируемый пост)
т.е. затычки нет?

переводить в однобайтную.
Цитата(bars80080 @  26.5.2008,  08:36 Найти цитируемый пост)
где бы посмотреть, какие кодировки многобайтные

семейство unicode(utf-8, utf-7, utf-16, ucsc etc) - многобайтовые. остальные - однобайтовые.
PM MAIL   Вверх
bars80080
Дата 26.5.2008, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



а-а-ачуметь!

мазефака, в соседнем разделе по javascript тельняшку на груди рвут, советуют всё иметь в utf-8

где истина?  smile 
PM MAIL WWW   Вверх
Feldmarschall
Дата 26.5.2008, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



А чё тебе так этот regexp уперся-то? База, вообще-то, должна быть спроектирована так, чтобы regexp в регулярных запросах не требовался.

За utf-8 рвут тельняшки потому, что чем быстрее все на него перейдут, тем быстрее кончится вся эта чехарда с кодировками.
PM   Вверх
bars80080
Дата 26.5.2008, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



Цитата(Feldmarschall @  26.5.2008,  10:42 Найти цитируемый пост)
А чё тебе так этот regexp уперся-то? 
 да не упёрся, это skyboy реанимировал, хотя проблема и не решена.

запросы не регулярные, а только для поиска


Цитата(Feldmarschall @  26.5.2008,  10:42 Найти цитируемый пост)
тем быстрее кончится вся эта чехарда с кодировками. 
 так смысл на него переходить, коли он не позволяет сделать регистронезависимый поиск? (или я чего-то не догнал?)

PM MAIL WWW   Вверх
skyboy
Дата 26.5.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(bars80080 @  26.5.2008,  11:13 Найти цитируемый пост)
 сделать регистронезависимый поиск?

использовать locate и regexp для полнотекстового поиска - довольно жесткое извращение.
при том, что есть match ... against и внешние индексаторы навроде sphinx
Цитата(bars80080 @  26.5.2008,  11:13 Найти цитируемый пост)
коли он не позволяет сделать регистронезависимый поиск

кодировка тут ни при чем. это специфика роботы СУБД(конкретной СУБД, причем), которая вполне может быть скорректирована в будущем.
PM MAIL   Вверх
Feldmarschall
Дата 26.5.2008, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



skyboy, 
Цитата(bars80080 @  11.2.2008,  13:03 Найти цитируемый пост)
правда mysql вроде 3.23.56 


Все, что в этой теме может быть написано, не имеет смысла. 
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0629 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.