Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Filter by Categories
ArcGIS Pro

Using ILIKE Operator In QGIS

How to use the ILIKE operator in QGIS

The ILIKE operator in QGIS is used for case-insensitive pattern matching. It functions similarly to the LIKE operator but does not consider case, making it particularly useful when dealing with data where case consistency might not be guaranteed. Here’s how you can use the ILIKE operator in QGIS:

Basic Usage of ILIKE in QGIS

The syntax for ILIKE is straightforward:

"fieldname" ILIKE 'pattern'

Here are some examples to illustrate different uses:

  1. Finding Entries Regardless of Case:
  • To find all records where the city name contains “york” (such as “New York”, “new york”, “NEW YORK”), you would use:
    sql "city" ILIKE '%york%'
  1. Using Wildcards:
  • % represents any sequence of characters (including none).
  • _ represents a single character.
  • For example, to match any name that starts with some variation of “al” (like “Al”, “al”, “AL”):
    sql "name" ILIKE 'al%'

Using ILIKE in the Query Builder

To use ILIKE within QGIS:

  1. Open the Query Builder:
  • Right-click on the layer in the ‘Layers Panel’ and choose Filter... or select the Select features using an expression tool when the attribute table is open.
  1. Enter the Expression:
  • In the Query Builder or Expression dialog, enter an expression using ILIKE. For example, to filter or select records where a field called description includes the word “annual” regardless of how it’s capitalized:
    sql "description" ILIKE '%annual%'

Use Cases in Field Calculator

You can also use ILIKE in the Field Calculator for creating or updating fields based on case-insensitive conditions:

  • Creating a New Field:
  • Suppose you want to create a new field that indicates whether the notes field contains the word “urgent” in any case form. You could use:
    sql "notes" ILIKE '%urgent%'
  • This expression would be used in the Field Calculator to assign a boolean true/false value to each record, indicating the presence of “urgent”.

Performance Considerations

Like LIKE, the ILIKE operator can be slow, especially with non-specific patterns (such as leading wildcards). While ILIKE is invaluable for ensuring case-insensitivity, it may lead to performance issues on large datasets. It’s important to consider the structure of your queries and use indices where possible.

By incorporating ILIKE into your queries in QGIS, you can enhance data retrieval flexibility by overcoming case sensitivity issues, which is particularly useful in environments where data entries might have inconsistent capitalization.

Frequently asked questions about using the ILIKE operator in QGIS:

1. What is the difference between LIKE and ILIKE in QGIS?

LIKE and ILIKE are both used for pattern matching in string fields. The key difference is that LIKE is case-sensitive by default, while ILIKE is explicitly case-insensitive. This means that ILIKE will treat ‘Apple’, ‘apple’, and ‘APPLE’ as equivalent when matching patterns. Choosing between them depends on whether or not your query should consider letter case.

2. How do I use ILIKE with wildcards in QGIS?

ILIKE can be used with two main wildcards: % (matches any sequence of characters) and _ (matches any single character). For example:

  • To find any entries that include any variation of ‘street’ (like ‘Street’, ‘street’, ‘STREET’), you would use: "address" ILIKE '%street%'
  • To match any three-letter names that start with any form of ‘al’, you can use: "name" ILIKE 'al_'

3. Can ILIKE be used for numeric fields?

ILIKE is designed for text fields. To use ILIKE with numeric fields, you first need to convert these fields to strings. In QGIS, you can use the to_string() function for this conversion. For example:

  • To find numeric entries in a field code that start with 123 regardless of subsequent characters, use: to_string("code") ILIKE '123%'

4. Is ILIKE efficient for large datasets?

ILIKE can be less efficient than LIKE, especially on large datasets, because case insensitivity requires additional processing. Performance can be particularly impacted when using leading wildcards (e.g., %name). For large datasets, consider using full-text search features if your underlying database supports them, or ensure that wildcards are used judiciously.

5. How can I combine ILIKE with other SQL operators in QGIS?

ILIKE can be combined with logical operators like AND, OR, and NOT to form complex queries. For example:

  • To find cities that start with ‘new’ and contain ‘york’ in any part of the string, regardless of case: "city" ILIKE 'new%' AND "city" ILIKE '%york%'
  • To find entries that do not start with ‘old’: "name" NOT ILIKE 'old%'

6. Are there any alternatives to ILIKE for case-insensitive searches in QGIS?

If performance is a concern, or ILIKE doesn’t meet specific needs, you might consider using regular expressions with the REGEXP function, which can be made case insensitive and offers more flexibility. Another alternative is to preprocess your data to normalize case (e.g., converting all text to lower or upper case) before performing queries.

7. How can I use ILIKE in the Field Calculator?

ILIKE can be used in the Field Calculator to create or modify fields based on case-insensitive conditions. For example, you can create a boolean field that indicates whether a particular keyword appears in a text field:

"notes" ILIKE '%urgent%'

This expression could be used to populate a new boolean field with True for records containing the word ‘urgent’ in any case.

8. What are the best practices for using ILIKE to ensure optimal performance?

To optimize the performance of ILIKE:

  • Avoid using leading wildcards if possible as they prevent the use of indexes.
  • Consider using text-processing functions to normalize case before applying LIKE if case sensitivity isn’t required, which can sometimes be faster than ILIKE.
  • Make sure your database is properly indexed, especially on the fields that are frequently searched with ILIKE.
About the Author
I'm Daniel O'Donohue, the voice and creator behind The MapScaping Podcast ( A podcast for the geospatial community ). With a professional background as a geospatial specialist, I've spent years harnessing the power of spatial to unravel the complexities of our world, one layer at a time.