ShadowLiberal
ShadowLiberal

Reputation: 348

How to perform SQLite LIKE queries with wildcards not read as wildcards

I'm running into a problem in SQLite when querying on text fields that happen to have the _ or % wildcard characters.

I have a table with a 'Name' field I want to query on. Two of my records have the value 'test' and 'te_t' in the 'Name' field I want to query on. If I run a query like below

"SELECT ALL * from Table WHERE Name LIKE 'te_t'"

This will return both the 'te_t' and 'test' records, because of '_' being read as a wildcard. How do I make it so that I only get the 'te_t' record from the above query?

I've done some research on this and read that I should be able to throw a backslash '\' character in front of the wildcard to get it to be read as a normal _ character instead of a wildcard. But when I try the query

"SELECT ALL * from Table WHERE Name LIKE 'te\_t'"

my query returns zero matches.

What am I doing wrong? Is this just not possible in SQLite?

Upvotes: 1

Views: 1184

Answers (1)

CL.
CL.

Reputation: 180030

In SQL, you can escape special characters in the LIKE pattern if you declare some escape character with ESCAPE:

SELECT * FROM MyTable WHERE Name LIKE 'te\_t' ESCAPE '\'

(see the documentation)

Upvotes: 3

Related Questions