Как заказать SQLite-результаты, содержащие умлауты и другие специальные символы? - PullRequest
1 голос
/ 23 июля 2010

Я хотел бы заказать свои результаты из SQLite в соответствии с правилами, используемыми для немецкого языка.Это означает, что символ типа «�» рассматривается как «ae», или «" »как« ue ».

На данный момент решение выглядит следующим образом:

SELECT * FROM data ORDER BY REPLACE(REPLACE(REPLACE(UPPER(einrichtung),'�','AE'),'�','OE'),'�','UE') LIMIT 0,20

Решениене должно включать установку дополнительных инструментов или модификацию службы SQLite, потому что этот проект должен запускаться «из коробки» везде, где он будет развернут.

Ответы [ 3 ]

0 голосов
/ 26 мая 2014

Я только что столкнулся с той же проблемой, и это все еще невозможно.

Это цитата из часто задаваемых вопросов sqlite.org:

В: Нечувствительное к регистру сопоставление символов Юникода не работает.

A: Конфигурация SQLite по умолчанию поддерживает только сравнения ASCII без учета регистра персонажи. Причина этого заключается в том, что делает полный Unicode для сравнения без учета регистра и преобразования регистра требуются таблицы и логика, которая почти удвоит размер библиотеки SQLite. Разработчики SQLite считают, что любое приложение, которому нужен полный Unicode поддержка случая, вероятно, уже имеет необходимые таблицы и функции и поэтому SQLite не должен занимать место, чтобы дублировать эту способность. Вместо полной поддержки регистра Unicode по умолчанию, SQLite обеспечивает возможность сопоставления с внешним сравнением Unicode и процедуры преобразования. Приложение может перегрузить встроенный NOCASE последовательность сортировки (используя sqlite3_create_collation ()) и встроенный функции like (), upper () и lower () (используя sqlite3_create_function ()). Исходный код SQLite включает в себя «ICU» расширение, которое делает эти перегрузки. Или разработчики могут написать свои собственные перегрузки, основанные на их собственных процедурах сравнения с поддержкой Unicode уже содержится в их проекте.

0 голосов
/ 02 ноября 2016

Вы должны сделать все в UTF-8 / UTF-16. Например, если вы имеете дело с PHP, вы также должны работать с utf8_encode / utf8_decode.

См. Также http://www.sqlite.org/pragma.html#pragma_encoding

(я знаю, что вопрос старый, но у людей все еще есть проблемы с правильной кодировкой.)

0 голосов
/ 23 июля 2010

Эй, это третье тысячелетие, чувак, больше нет специальных символов - только символы.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...