case_sensitive (for Explores)

This page refers to the case_sensitive parameter that is part of an Explore.

case_sensitive can also be used as part of a model, described on the case_sensitive (for models) parameter documentation page.

case_sensitive can also be used as part of a dimension, described on the case_sensitive (for fields) parameter documentation page.

Usage

explore: explore_name {
  case_sensitive: yes
}
Hierarchy
case_sensitive
Default Value
yes, if the database dialect supports the parameter

Accepts
A Boolean (yes or no)

Definition

case_sensitive determines whether or not filters will be treated as case-sensitive on a given Explore. All filters related to the Explore are affected, including those added in the Explore UI, Dashboard UI, and filters parameter.

By default, case_sensitivity is on and filters are case-sensitive. However, some dialects do not support this parameter, as described in the case_sensitive is not supported by some SQL dialects section on this page.

case_sensitive works by adjusting the WHERE clause of the SQL that Looker generates. When case_sensitive is on, filters are expressed with = or LIKE, such as:

WHERE name = 'bob'
WHERE name LIKE '%bob%'

When case_sensitive is off, filters are expressed with ILIKE (or equivalent), such as:

WHERE name ILIKE 'bob'

Examples

Make all filters case-sensitive for the Product Explore:

explore: product {
  case_sensitive: yes
}

Make all filters not case-sensitive for the Customer Explore:

explore: customer {
  case_sensitive: no
}

Common challenges

case_sensitive is not supported by some SQL dialects

By default, case_sensitivity is on and filters are case-sensitive. If your SQL dialect doesn't support the case_sensitive parameter, case-sensitivity will vary according to your database setup, which will usually not be case-sensitive.

For Looker to support case_sensitive in your Looker project, your database dialect must also support it. The following table shows which dialects support case_sensitive in the latest release of Looker:

Dialect Supported?
Actian Avalanche
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
Amazon Redshift 2.1+
Amazon Redshift Serverless 2.1+
Apache Druid
Apache Druid 0.13+
Apache Druid 0.18+
Apache Hive 2.3+
Apache Hive 3.1.2+
Apache Spark 3+
ClickHouse
Cloudera Impala 3.1+
Cloudera Impala 3.1+ with Native Driver
Cloudera Impala with Native Driver
DataVirtuality
Databricks
Denodo 7
Denodo 8 & 9
Dremio
Dremio 11+
Exasol
Google BigQuery Legacy SQL
Google BigQuery Standard SQL
Google Cloud PostgreSQL
Google Cloud SQL
Google Spanner
Greenplum
HyperSQL
IBM Netezza
MariaDB
Microsoft Azure PostgreSQL
Microsoft Azure SQL Database
Microsoft Azure Synapse Analytics
Microsoft SQL Server 2008+
Microsoft SQL Server 2012+
Microsoft SQL Server 2016
Microsoft SQL Server 2017+
MongoBI
MySQL
MySQL 8.0.12+
Oracle
Oracle ADWC
PostgreSQL 9.5+
PostgreSQL pre-9.5
PrestoDB
PrestoSQL
SAP HANA
SAP HANA 2+
SingleStore
SingleStore 7+
Snowflake
Teradata
Trino
Vector
Vertica

Things to know

You can create a case-sensitive search in MySQL

It is possible to create a case-sensitive search in MySQL, even though MySQL does not support the case_sensitive parameter. In MySQL, certain data types — called binary strings — store text as a series of numbers. The capitalization of the text makes a difference in the numbers that are used. Therefore, if you convert your text to a binary string, you can make searches that are case-sensitive. For example:

dimension: will_NOT_be_case_sensitive {
  sql: ${TABLE}.something ;;
}

dimension: will_be_case_sensitive {
  sql: CAST(${TABLE}.something AS BINARY) ;;
}