Автор Тема: Как заставить "REGEXP" НЕ учитывать регистр букв?  (Прочитано 9329 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Shamandeffer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 95
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.BraBruS.com
У меня маленькая проблема.
При поиске в БД я использую такой сиснтаксис:
             "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:

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
> НО регистр REGEXP учитывает!
значит у тебя столбец тоже BINARY
На Машине Тьюринга далеко не уедешь.

Оффлайн Shamandeffer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 95
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.BraBruS.com
Столбцы у меня Типа TEXT

Оффлайн Shamandeffer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 95
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.BraBruS.com
Ни кто не знает?
Очень Жаль....

Оффлайн Wyclef

  • hello_worlder
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thug.narod.ru
ИМХО, поля типа TEXT не бинарные...
Попробуй проверить REGEXP по латинскому слову.
It\'s nice to be important, but it\'s more important to be nice!

Оффлайн Shamandeffer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 95
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.BraBruS.com
Wyclef . Попробывал я по латинскому слову, но эффект тоже - учитывает REGEXP регистр слов , УЧИТЫВАЕТ!
P.S. А что такое ИМХО?

Оффлайн Shamandeffer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 95
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.BraBruS.com
А если перевести в верхний регистр, то REGEXP  ищет соответствующую строку в верхнем регистре.
Может есть какая-нибудь приставка(вроде BINARY) для отмены учёта регистра?

Оффлайн Wyclef

  • hello_worlder
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thug.narod.ru
Цитировать
А что такое ИМХО


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

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


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

BINARY можно задать при создании таблицы для полей типа CHAR и VARCHAR - тогда regexp для них будет регистрозависимый по-умолчанию.
It\'s nice to be important, but it\'s more important to be nice!

Оффлайн Shamandeffer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 95
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.BraBruS.com
Wyclef !
Так что такое ИМХО?

Оффлайн Wyclef

  • hello_worlder
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thug.narod.ru
It\'s nice to be important, but it\'s more important to be nice!

Оффлайн Shamandeffer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 95
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.BraBruS.com
Я нашёл ответ на свой вопрос на другом форуме (конечно не такой удачный, но там тоже есть умные люди):
БЫЛО - "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 , спасибо.

Оффлайн Wyclef

  • hello_worlder
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thug.narod.ru
Цитировать
Shamandeffer:
Я нашёл ответ на свой вопрос на другом форуме

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

Всегда пожалуйста! ;)
It\'s nice to be important, but it\'s more important to be nice!

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28