трабла регулярных выражений в MySQL
xdsl просто хороший человек
Пол:
Зарегистрирован: 25.11.2004
Сообщения: 1252
Откуда: shadrinsk
Статус: Offline
Пишем
В ответ должны получить 0.
Вместо этого получаем 1.
Проблема возникает при клиентской кодировке utf8.
При работе с таблицами проблема та-же (т.е. возвращает результатов больше, чем должно), если кодировка столбцов - utf8
Проверено на mysql 5.0.41 и 5.0.22
Вопрос - как с этим бороться?
Вариант с откатом на однобайтовую кодировку особо не прельщает.
Добавлено спустя 31 минуту 3 секунды:
Блин, только-что прочитал:
Warning
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.
Что-же они так тормозят-то? В перле, php уже давно работает ...
Добавлено спустя 1 час 30 минут 48 секунд:
Сам с собою веду беседу ...
Вообщем, частное решение проблемы я нашел, но уж здорово костыльное. Например:
SELECT convert("я" using cp1251) regexp convert("[ф]" using cp1251)
Жуткий откат в древность, конечно, но пока модуль регулярки не доделают, придется пользоваться... Или на postgresql уходить ... |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы
|