Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Регулярное выражение для MySQL: поиск всех записей начинающиеся на букву английского алфавита
 
 автор: OLi   (23.03.2011 в 00:11)   письмо автору
 
 

Возможно ли задать в самом запросе регулярку вида A-Z для поиска всех записей начинающиеся на букву анг алфавита?

  Ответить  
 
 автор: cheops   (23.03.2011 в 12:34)   письмо автору
 
   для: OLi   (23.03.2011 в 00:11)
 

Для этого удобно воспользоваться оператором RLIKE и следующим регулярным выражением
SELECT * FROM tbl WHERE fld LIKE '^[A-Z]'

  Ответить  
 
 автор: OLi   (26.03.2011 в 01:43)   письмо автору
 
   для: cheops   (23.03.2011 в 12:34)
 

Странно, вот запрос select * from companes where vip=1 and title LIKE '^[A-Z]%' order by title,id
В таблице есть запись с title = azuk
Запрос ничего не возвращает...
и ошибок вроде тоже нету..

  Ответить  
 
 автор: cheops   (26.03.2011 в 10:35)   письмо автору
 
   для: OLi   (26.03.2011 в 01:43)
 

У вас вероятно зависящее от регистра сопоставление, исправьте запрос так
select * from companes where vip=1 and title LIKE '^[a-zA-Z]%'

  Ответить  
 
 автор: OLi   (26.03.2011 в 11:22)   письмо автору
 
   для: cheops   (26.03.2011 в 10:35)
 

Все равно не находит совпадений

  Ответить  
 
 автор: OLi   (26.03.2011 в 11:34)   письмо автору
 
   для: OLi   (26.03.2011 в 11:22)
 

Все сделал через REGEXP

  Ответить  
 
 автор: cheops   (26.03.2011 в 11:36)   письмо автору
 
   для: OLi   (26.03.2011 в 11:34)
 

Да, конечно, ошибка в запросе, вместо LIKE нужно указывать RLIKE, который является синонимом REGEXP.

  Ответить  
 
 автор: OLi   (26.03.2011 в 12:29)   письмо автору
 
   для: cheops   (26.03.2011 в 11:36)
 

Есть еще такой запрос, который почему-то не возвращает записи, начинающиеся с 'А'
select * from companes where vip=1 and title LIKE 'А%' order by title,id
Русские символы..
Запись в таблице вида:
Аленушка
аленушка

  Ответить  
 
 автор: cheops   (26.03.2011 в 12:33)   письмо автору
 
   для: OLi   (26.03.2011 в 12:29)
 

А не может условие vip = 1 тут мешать выбирать записи?

  Ответить  
 
 автор: OLi   (26.03.2011 в 13:16)   письмо автору
 
   для: cheops   (26.03.2011 в 12:33)
 

Нет, запись с vip=1 есть

  Ответить  
 
 автор: cheops   (26.03.2011 в 13:22)   письмо автору
 
   для: OLi   (26.03.2011 в 13:16)
 

Именно с большой буквой А? Дело в том, что маленькие буквы могут не попадать в выборку, если у вас выбрано регистрозависимое сопоставление.

  Ответить  
 
 автор: OLi   (26.03.2011 в 13:24)   письмо автору
 
   для: cheops   (26.03.2011 в 13:22)
 

В базе запись и с маленькой и большой буквы...в Like вставляется А...не находит в обеих случаях

  Ответить  
 
 автор: cheops   (26.03.2011 в 13:29)   письмо автору
 
   для: OLi   (26.03.2011 в 13:24)
 

1. Кодировка соединения правильно указывается? Она совпадает с кодировкой, в которой набрана буква А в запросе?
2. Тестируете в скрипте? В phpMyAdmin тот же результат?

  Ответить  
 
 автор: OLi   (26.03.2011 в 14:11)   письмо автору
 
   для: cheops   (26.03.2011 в 13:29)
 

В phpmyadmin запрос возвращает результат для 'а' и 'А'

  Ответить  
 
 автор: cheops   (26.03.2011 в 14:13)   письмо автору
 
   для: OLi   (26.03.2011 в 14:11)
 

phpMyAdmin - это большой PHP-скрипт, все что он делает, вы можете добиться в своем скрипте. Если он возвращает правильный результат, а ваш скрипт нет - где-то что-то неправильно с кодировками.

  Ответить  
 
 автор: OLi   (26.03.2011 в 14:24)   письмо автору
 
   для: cheops   (26.03.2011 в 14:13)
 

Кодировка в базе utf8
Страницы utf8
Прописаны заголовки <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
и при коннекте mysql_query('set names "utf8"');
Странно работает...добавил запись с 'Е' находит как для 'е' 'Е'

  Ответить  
 
 автор: cheops   (26.03.2011 в 14:28)   письмо автору
 
   для: OLi   (26.03.2011 в 14:24)
 

Если не сложно прикрепите кусочек дампа с проблемной таблицей (пару записей), чтобы можно было воспроизвести ситуацию?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования