web-dev-qa-db-fra.com

Comment rechercher une sous-chaîne dans SQLite?

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.

32
T.T.T.

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.

40
GrandmasterB

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.

12
Jerry Coffin

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.

0
Alexei Martianov