'How to search for a substring in SQLite?
Whats the most efficient way to search for a sub string in SQLite?
I'm looking at the LIKE operator.
Do I have the right idea? Has this worked well for you?
http://www.sqlite.org/lang_expr.html
Thank You.
Solution 1:[1]
Yes, use Like. A query such as:
Select id from sometable where name like '%abc%'
would return any row that contained "abc" anywhere in the name column.
If the pattern you are looking for happens to contain the % or _ character, you can use the ESCAPE keyword to define an escape character to include that special character in the expression. To look for the string "somename%" (including the %), it'd look something like:
select id from mytable where name like '%somename\%%' escape '\'
Solution 2:[2]
You can use LIKE, but it gets really slow if the pattern you're searching for starts with '%' -- i.e., if the substring you're looking for isn't necessarily at the beginning of the field.
If you need to do such searches, consider using FTS3, which makes full-text searching considerably more efficient.
Solution 3:[3]
Years have passed since the question was asked and answered and in 2012 SQLite version 3.7.15 introduced a function instr( string, substring) - returns the location of a substring in a string, 0 if not found. (https://www.techonthenet.com/sqlite/functions/instr.php)
sqlite> SELECT instr('TechOnTheNet.com', 'T');
Result: 1
I have not benchmarked against LIKE, but IMHO could be faster.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Jerry Coffin |
| Solution 3 |
