Comment ignorer l'accent dans la requête SQLite (Android)
Je suis nouveau dans adnroid et je suis en train de travailler sur une requête dans sqlite, mais le problème est que lorsque j'utilise accent dans mon string. Ex:
- VIVANTS
- vivants
- ÀÀÀ
- ààà
- aaa
- AAA
Si je fais:
SELECT * FROM TB_MOVIE WHERE MOVIE_NAME LIKE '%a%' ORDER BY MOVIE_NAME;
Il est de retour:
- AAA
- aaa (C'est en ignorant les autres)
Mais si je fais:
SELECT * FROM TB_MOVIE WHERE MOVIE_NAME LIKE '%à%' ORDER BY MOVIE_NAME;
Il est de retour:
- ààà (en ignorant le titre "ÀÀÀ")
Je veux sélectionner des chaînes dans une DB SQLite sans prendre soin pour les accents et le cas. S'il vous plaît aider.
source d'informationauteur andrehsouza
Vous devez vous connecter pour publier un commentaire.
En général, les comparaisons de chaînes dans SQL sont contrôlés par colonne ou une expression
COLLATE
règles. Dans Android, seulement trois séquences de classement sont pré-défini: BINAIRE (par défaut), LOCALISÉE et UNICODE. Aucun d'entre eux est idéal pour votre cas d'utilisation, et de l'API C pour l'installation du nouveau classement des fonctions n'est malheureusement pas exposés dans l'API Java.Pour contourner ce problème:
MOVIE_NAME_ASCII
Stocker des valeurs dans cette colonne, avec les marques d'accent supprimé. Vous pouvez supprimer les accents en normalisant vos chaînes Unicode Forme Normale D (NFD) et la suppression de la non-ASCII code points depuis NFD représente les caractères accentués sont à peu près aussi simple ASCII + combinant accent marqueurs:
Faites vos recherches en texte intégral sur cette ASCII normalisés en fonction de la colonne, mais l'affichage de données à partir de l'original de la colonne unicode.
Vous pouvez utiliser la version d'Android NDK recompiler le SQLite source, y compris le désiré unité de soins intensifs (International Components for Unicode).
Expliqué en russe ici:
http://habrahabr.ru/post/122408/
Le processus de compilation de la SQLilte avec source ICU expliqué ici:
Comment compiler sqlite avec soins intensifs?
Malheureusement, vous vous retrouverez avec différents Apk pour différents Processeurs.
Vous avez besoin de regarder ces, pas comme les caractères accentués, mais tout à fait différents personnages. Vous pourriez aussi bien être à la recherche pour a, b, ou c. Cela étant dit, je voudrais essayer d'utiliser une regex pour elle. Il ressemblerait à quelque chose comme: