Найти - Пользователи
Полная версия: sql like по русски
Начало » Базы данных » sql like по русски
1 2
ZZZ
Не знаю как в MySQL, а в каноническом SQL сопостовление с LIKE регистрозависимое. В PosrgreSQL есть способы задать вопрос так, как надо. Там даже стандартный re можно использовать…
Naota
ZZZ
Не знаю как в MySQL, а в каноническом SQL сопостовление с LIKE регистрозависимое. В PosrgreSQL есть способы задать вопрос так, как надо. Там даже стандартный re можно использовать…
В MySQL, LIKE регистро-независимый. Да и такой запрос:
select([func.upper(t.c.name).label('name')], func.upper(t.c.name).like(func.upper(u'Пуля')))
Дает одно слово “Пуля”. Регэкспы и в MySQL можно юзать.
Naota
shiza
а если попробовать выполнить в SQLyong:
select * from test where name LIKE 'пуля'
Правильно выборку делает?
Нет, он так вообще ниче не находит. Нужно писать в юникоде. Если из таблицы взять кракозябру, то найдет. Но опять же одно слово.
shiza
Если все кодировки правильно стоят, то SQLyong - в нужной колировке запрос делает.
У меня на твоей таблице и моем запросе, в SQLyong возвращаются все варианты слова “пуля”.
Naota
Ога. Проверил. Если все делать из SQLyong, то все работает. Ну ясно. Значит алхимия косячит. Есть идеи как его можно настроить?
Naota
Решение нашел в соседней ветки. Session.execute( “SET NAMES UTF8” ) спасает…
Теперь надо всю базу перекодировать %)
Naota
Неудобно жуть. При каждом запросе делать такую бяку :(
Ferroman
Обверни во что-нибудь.
А лучше алхимию подфиксай ;)
Naota
Да просто, в каждом методе контроллеров __before__, пишешь эту чачу) Нет желания у меня копаться в алхимии. Будет долго, так как английский не знаю. Может со временем кто-то найдет решение покрасивше :)
Naota
Поковырялси я. Оказывается алхимия тут не при чем.
# -*- coding: utf-8 -*-

from MySQLdb import Connection

c = Connection("localhost", "lodin", "pass", "db")
c.query("INSERT INTO `Blog` (subject) VALUES ('тема')")
c.commit()
Пишет кракозябру в базу.
а так
# -*- coding: utf-8 -*-

from MySQLdb import Connection

c = Connection("localhost", "lodin", "pass", "db")
c.query("SET NAMES UTF8")
c.query("INSERT INTO `Blog` (subject) VALUES ('тема')")
c.commit()
всё отлично. Получается этот модуль надо править или я не знаю чё. Подскажите люди знающие!

P.S. В принципе можно изменить MySQLdb и в инициацию класса Connection, добавить self.query(“SET NAMES UTF8”) и будет все ровно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB