Sqlite3 par défaut trie seulement par des lettres ascii. J'ai essayé de regarder dans google, mais la seule chose que j'ai trouvé étaient des informations sur les collations. Sqlite3 a seulement NOCASE
, RTRIM
et BIARY
collations. Comment ajouter du support pour une locale spécifique? (Je l'utilise dans l'application Rails)Comment faire pour trier le texte dans sqlite3 avec les paramètres régionaux spécifiés?
Répondre
SQLite supports intégration avec ICU. Selon le fichier Lisez-moi, sqlite/ext/icu/README.txt
le répertoire sqlite/ext/icu/
contient le code source de l'extension SQLite "ICU", une intégration de la bibliothèque "International Components for Unicode" avec SQLite.
1. Features
1.1 SQL Scalars upper() and lower()
1.2 Unicode Aware LIKE Operator
1.3 ICU Collation Sequences
1.4 SQL REGEXP Operator
j'ai accepté réponse Doug Currie, mais je veux ajouter un peu de « algorithme » comment le faire, parce que la documentation sqlite3 est très étrange (au moins pour moi).
Ok, nous avons travaillé sqlite3 et maintenant:
compiler:
gcc -shared icu.c `icu-config --ldflags` -o libSqliteIcu.so
Il est pour Linux. J'ai aussi besoin d'installer le paquet supplémentaire de développement de soins intensifs:
sudo apt-get install libicu-dev
Je travaille sur 64 bits et l'architecture que j'obtiens l'erreur avec
__relocation R_X86_64_32S__
(tout cela signifie :). GCC a suggéré d'ajouter-fPIC
pour compiler les options et cela a aidé.Exécutez sqlite3. On peut charger l'extension avec la commande:
.load './libSqliteIcu.so'
Si l'on suppose qu'il est dans le répertoire courant, on peut aussi spécifier le chemin entier.
Créer nouveau classement:
SELECT icu_load_collation('pl_PL', 'POLISH');
Le premier paramètre est souhaité locale et le second est qu'il est (il peut être tout).
Maintenant, nous pouvons trier les données avec notre nouveau lieu:
SELECT * FROM some_table ORDER BY name COLLATE POLISH;
Et il est insensible à la casse!
Si vous ne pouvez pas vous permettre de compiler l'extension ICU, vous pouvez faire en sorte qu'une UDF fasse de même. En PHP/AOP:
$pdo->sqliteCreateFunction('locale',
function ($data, $locale = 'root')
{
static $collators = array();
if (isset($collators[$locale]) !== true)
{
$collators[$locale] = new \Collator($locale);
}
return $collators[$locale]->getSortKey($data);
}
);
Exemple d'utilisation:
SELECT * FROM "table" ORDER BY locale("column", 'pt_PT');
Je ne pense pas que cette approche soit aussi efficace que l'extension native, mais il est certainement plus facile à transporter.
- 1. Comment rechercher les paramètres régionaux dans Sybase?
- 2. Gettext et les paramètres régionaux
- 3. Grails comment changer les paramètres régionaux actuels
- 4. Regex pour faire correspondre le texte entre les délimiteurs spécifiés? (Je ne peux pas le faire moi-même)
- 5. Comment définir les paramètres régionaux du pilote DB2 ODBC?
- 6. Comment comparer les nombres flottants dépendants des paramètres régionaux?
- 7. String.Format considère les paramètres régionaux ou non?
- 8. Code de paramètres régionaux pour les chaînes localisables de l'iPhone
- 9. NSDateFormatter n'analyse pas les dates en utilisant les paramètres régionaux?
- 10. Prise en charge des paramètres régionaux OS pour Python
- 11. Comment faire pour trier Hacker News
- 12. Comment obtenir des paramètres régionaux de demande dans OGNL?
- 13. Comment faire pour trier les tableaux par produit [compteur] .getProductTitle()?
- 14. Définir les paramètres régionaux d'un SQL Server 2005
- 15. Comment définir les paramètres régionaux pour un processus lancé par CreateProcess()
- 16. Validation des chaînes au format YYYY-MM-DD avec Zend_Validate_Date dans les paramètres régionaux en_US
- 17. Comment faire pour arrêter le texte dans le tableau HTML
- 18. Comment convertir un flottant en chaîne indépendamment des paramètres régionaux?
- 19. Définition des paramètres régionaux via RCP-Designer
- 20. comment puis-je définir les paramètres régionaux initiaux appropriés pour un programme C++ sur Windows?
- 21. Comment faire un astérisque avec le texte environnant dans WPF?
- 22. Trier les fichiers texte pour l'affichage du site Web
- 23. Pourquoi GWT ignore les paramètres régionaux du navigateur?
- 24. Comment définir les paramètres régionaux dans un Struts personnalisé 2 ActionMapper
- 25. Python curses.ascii en fonction des paramètres régionaux?
- 26. Comment faire correspondre les URI dans le texte?
- 27. Comment faire une requête get get HTTP avec les paramètres
- 28. Comment formater un entier en utilisant les paramètres régionaux actuels dans Delphi
- 29. Méthodes de personnalisation modulaire des messages de paramètres régionaux?
- 30. Comment faire pour trier les données XML en utilisant ASP (VBScript) classique avec out xpath?
Le premier lien est protégé par mot de passe maintenant. –