Forum Webscript.Ru

Общие => Базы данных => Тема начата: Shamandeffer от 05 Июня 2003, 01:33:04

Название: Как заставить "REGEXP" НЕ учитывать регистр букв?
Отправлено: Shamandeffer от 05 Июня 2003, 01:33:04
У меня маленькая проблема.
При поиске в БД я использую такой сиснтаксис:
             "SELECT * FROM table WHERE m_m=3 AND (m_mm REGEXP "Привет" OR m_mn REGEXP "Пивет") ORDER BY id DESC"
В мануале по MySQL написано, что в версиях MySQL до 3.23.4 REGEXP учитывает регистр символов, а начиная с версии MySQL 3.23.4, заставить REGEXP учитывать регистр символов можно с помощью ключевого слова BINARY. У меня версия 3.23.53, НО регистр REGEXP учитывает! Т.е. слово "привет" в столбце m_mm или в столбце  m_mn SELECT не находит.
 Как заставить REGEXP не учитывать регистр или есть другой способ?
:cool:
Название: Как заставить "REGEXP" НЕ учитывать регистр букв?
Отправлено: fidget от 05 Июня 2003, 11:40:10
> НО регистр REGEXP учитывает!
значит у тебя столбец тоже BINARY
Название: Как заставить "REGEXP" НЕ учитывать регистр букв?
Отправлено: Shamandeffer от 05 Июня 2003, 16:20:32
Столбцы у меня Типа TEXT
Название: Как заставить "REGEXP" НЕ учитывать регистр букв?
Отправлено: Shamandeffer от 05 Июня 2003, 22:54:09
Ни кто не знает?
Очень Жаль....
Название: Как заставить "REGEXP" НЕ учитывать регистр букв?
Отправлено: Wyclef от 06 Июня 2003, 00:41:09
ИМХО, поля типа TEXT не бинарные...
Попробуй проверить REGEXP по латинскому слову.
Название: Как заставить "REGEXP" НЕ учитывать регистр букв?
Отправлено: Shamandeffer от 07 Июня 2003, 17:20:55
Wyclef . Попробывал я по латинскому слову, но эффект тоже - учитывает REGEXP регистр слов , УЧИТЫВАЕТ!
P.S. А что такое ИМХО?
Название: Как заставить "REGEXP" НЕ учитывать регистр букв?
Отправлено: Shamandeffer от 07 Июня 2003, 21:23:44
А если перевести в верхний регистр, то REGEXP  ищет соответствующую строку в верхнем регистре.
Может есть какая-нибудь приставка(вроде BINARY) для отмены учёта регистра?
Название: Как заставить "REGEXP" НЕ учитывать регистр букв?
Отправлено: Wyclef от 09 Июня 2003, 01:01:53
Цитировать
А что такое ИМХО


В мануале есть пример:

mysql> select "a" REGEXP "A", "a" REGEXP BINARY "A";
        -> 1  0


Т.е. в первый regexp сработал, а второй с binary нет.
По-умолчанию, regexp регистронезависимый, ИМХО...

BINARY можно задать при создании таблицы для полей типа CHAR и VARCHAR - тогда regexp для них будет регистрозависимый по-умолчанию.
Название: Как заставить "REGEXP" НЕ учитывать регистр букв?
Отправлено: Shamandeffer от 10 Июня 2003, 02:49:08
Wyclef !
Так что такое ИМХО?
Название: Как заставить "REGEXP" НЕ учитывать регистр букв?
Отправлено: Wyclef от 11 Июня 2003, 01:43:27
http://sokr.ru (http://sokr.ru/)
Название: Как заставить "REGEXP" НЕ учитывать регистр букв?
Отправлено: Shamandeffer от 11 Июня 2003, 14:58:31
Я нашёл ответ на свой вопрос на другом форуме (конечно не такой удачный, но там тоже есть умные люди):
БЫЛО - "SELECT * FROM table WHERE m_m=3 AND (m_mm REGEXP "Привет" OR m_mn REGEXP "Пивет") ORDER BY id DESC"

НАДО - "SELECT * FROM table WHERE m_m=3 AND (UCASE( m_mm )REGEXP UCASE("Привет") OR UCASE(m_mn) REGEXP UCASE("Пивет")) ORDER BY id DESC"

Надо перевести в верний регистр содержание столбца и искомое слово. Проверил всё работает, но я так и не понял почему REGEXP ГЛЮЧИТ!!!!!!

Спасибо ВСЕМ! В часности, Wyclef , спасибо.
Название: Как заставить "REGEXP" НЕ учитывать регистр букв?
Отправлено: Wyclef от 12 Июня 2003, 00:35:28
Цитировать
Shamandeffer:
Я нашёл ответ на свой вопрос на другом форуме

бум знать :)
Цитировать
Спасибо ВСЕМ!

Всегда пожалуйста! ;)