Quel est le moyen le plus efficace de rechercher une sous-chaîne dans SQLite ?
Je regarde l'opérateur LIKE.
Est-ce que j'ai la bonne idée ? Est-ce que cela a bien fonctionné pour vous ?
http://www.sqlite.org/lang_expr.html
Merci.
Quel est le moyen le plus efficace de rechercher une sous-chaîne dans SQLite ?
Je regarde l'opérateur LIKE.
Est-ce que j'ai la bonne idée ? Est-ce que cela a bien fonctionné pour vous ?
http://www.sqlite.org/lang_expr.html
Merci.
Oui, utilisez Like
. Une requête telle que :
Select id from sometable where name like '%abc%'
renverrait toute ligne contenant "abc" dans la colonne des noms.
Si le motif que vous recherchez contient le caractère % ou _, vous pouvez utiliser le mot-clé ESCAPE pour définir un caractère d'échappement afin d'inclure ce caractère spécial dans l'expression. Pour rechercher la chaîne "nom_de_somme%" (y compris le %), l'expression ressemblerait à ceci :
select id from mytable where name like '%somename\%%' escape '\'
Vous puede utiliser LIKE
mais il devient vraiment lent si le motif que vous recherchez commence par '%'
-- c'est-à-dire si la sous-chaîne que vous recherchez ne se trouve pas nécessairement au début du champ.
Si vous avez besoin d'effectuer de telles recherches, envisagez d'utiliser l'outil FTS3 ce qui rend la recherche en texte intégral beaucoup plus efficace.
Des années ont passé depuis que la question a été posée et répondue et en 2012, la version 3.7.15 de SQLite a introduit une fonction instr( string, substring)
- renvoie l'emplacement d'une sous-chaîne dans une chaîne de caractères, 0 si non trouvé. ( https://www.techonthenet.com/sqlite/functions/instr.php )
sqlite> SELECT instr('TechOnTheNet.com', 'T') ;
Résultat : 1
Je n'ai pas fait de comparaison avec LIKE
mais, à mon avis, il pourrait être plus rapide.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.