Quel est le moyen le plus efficace de rechercher une sous-chaîne dans SQLite?
Je regarde l'opérateur LIKE.
Ai-je la bonne idée? Cela a-t-il bien fonctionné pour vous?
http://www.sqlite.org/lang_expr.html
Je vous remercie.
Yepper, utilisez Like. Select id from sometable where name like '%omm%'
renverrait n'importe quelle ligne contenant 'omm' n'importe où dans la colonne de nom.
Vous pouvez utiliser LIKE
, mais cela ralentit vraiment si le motif recherché commence par '%'
- c’est-à-dire si la sous-chaîne recherchée ne se trouve pas nécessairement au début de champ.
Si vous avez besoin de faire de telles recherches, pensez à utiliser FTS3 , ce qui rend la recherche en texte intégral considérablement plus efficace.
Des années ont passé depuis que la question a été posée et répondue et en 2012, SQLite version 3.7.15 a introduit une fonction instr( string, substring)
- renvoie l'emplacement d'une sous-chaîne dans une chaîne, 0 s'il n'est pas trouvé. ( https://www.techonthenet.com/sqlite/functions/instr.php )
sqlite> SELECT instr ('TechOnTheNet.com', 'T');
Résultat: 1
Je n'ai pas comparé avec LIKE
, mais mon humble avis pourrait être plus rapide.