This page refers to the
case_sensitiveparameter that is part of a model.
case_sensitivecan also be used as part of an Explore, described on thecase_sensitive(for Explores) documentation page.
case_sensitivecan also be used as part of a dimension or filter field, described on thecase_sensitive(for fields) documentation page.
Usage
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 filters will be treated as case-sensitive for a given model.  All filters related to the model are impacted, including those added in the Explore UI, the Dashboard UI, a filter field, or a measure's filters parameter.
case_sensitive works by adjusting the WHERE clause of the SQL that Looker generates.  When case_sensitive: yes, filters are expressed with = or LIKE, such as:
WHERE name = 'bob'
WHERE name LIKE '%bob%'
When case_sensitive: no, filters are expressed with ILIKE (or equivalent), such as:
WHERE name ILIKE 'bob'
Most SQL dialects support case_sensitive. However, 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. Dialect support is listed in case_sensitive is not supported by some SQL dialects.
Examples
Make all filters case-sensitive for a model:
connection: "connection_name"
include: "filename_or_pattern"
case_sensitive: yes
explore: explore_name {...}
Make all filters not case-sensitive for a model:
connection: "connection_name"
include: "filename_or_pattern"
case_sensitive: no
Common challenges
case_sensitive is not supported by some SQL dialects
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 | Yes  | 
| Amazon Athena | Yes  | 
| Amazon Aurora MySQL | No  | 
| Amazon Redshift | Yes  | 
| Amazon Redshift 2.1+ | Yes  | 
| Amazon Redshift Serverless 2.1+ | Yes  | 
| Apache Druid | Yes  | 
| Apache Druid 0.13+ | Yes  | 
| Apache Druid 0.18+ | Yes  | 
| Apache Hive 2.3+ | Yes  | 
| Apache Hive 3.1.2+ | Yes  | 
| Apache Spark 3+ | Yes  | 
| ClickHouse | Yes  | 
| Cloudera Impala 3.1+ | Yes  | 
| Cloudera Impala 3.1+ with Native Driver | Yes  | 
| Cloudera Impala with Native Driver | Yes  | 
| DataVirtuality | Yes  | 
| Databricks | Yes  | 
| Denodo 7 | Yes  | 
| Denodo 8 & 9 | Yes  | 
| Dremio | Yes  | 
| Dremio 11+ | Yes  | 
| Exasol | Yes  | 
| Google BigQuery Legacy SQL | Yes  | 
| Google BigQuery Standard SQL | Yes  | 
| Google Cloud PostgreSQL | Yes  | 
| Google Cloud SQL | No  | 
| Google Spanner | Yes  | 
| Greenplum | Yes  | 
| HyperSQL | No  | 
| IBM Netezza | Yes  | 
| MariaDB | No  | 
| Microsoft Azure PostgreSQL | Yes  | 
| Microsoft Azure SQL Database | No  | 
| Microsoft Azure Synapse Analytics | No  | 
| Microsoft SQL Server 2008+ | No  | 
| Microsoft SQL Server 2012+ | No  | 
| Microsoft SQL Server 2016 | No  | 
| Microsoft SQL Server 2017+ | No  | 
| MongoBI | Yes  | 
| MySQL | No  | 
| MySQL 8.0.12+ | No  | 
| Oracle | Yes  | 
| Oracle ADWC | Yes  | 
| PostgreSQL 9.5+ | Yes  | 
| PostgreSQL pre-9.5 | Yes  | 
| PrestoDB | Yes  | 
| PrestoSQL | Yes  | 
| SAP HANA | Yes  | 
| SAP HANA 2+ | Yes  | 
| SingleStore | No  | 
| SingleStore 7+ | No  | 
| Snowflake | Yes  | 
| Teradata | Yes  | 
| Trino | Yes  | 
| Vector | Yes  | 
| Vertica | Yes  | 
DataVirtuality provides a semantic data layer connecting to various database dialects. If Looker supports case_sensitive for the underlying dialects, then Looker supports case_sensitive for DataVirtuality connecting to those dialects.
Things to know
You can create a case-sensitive search in MySQL
It is possible to create a case-sensitive search in MySQL without using 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) ;;
}