---
schema_version: "1"
id: 77ea0f4f282a4cc8e68870736b81f595947975b231d2b836576a2ee52f391b1d
title: CONTAINS / ICONTAINS
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/data-cloud/data-cloud-query-guide/references/data-cloud-sql-reference/scalar-func/string-func/contains.md
canonical_url: https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/contains.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: b7655a5e0a6351ee6be9527e999e2c68bc4b51cc1f8701cec78726403f73d834
products:
  - Data 360 Query Guide
  - Data 360 Developer Documentation
---
# `CONTAINS` / `ICONTAINS`

**Applies to:** ✅ Data 360 SQL ✅ Tableau Hyper API

Checks whether a string contains a specified substring or character value. `CONTAINS` performs a case-sensitive search, while `ICONTAINS` performs a case-insensitive search.

## Syntax

```sql
contains(<string>, <substring>)
icontains(<string>, <substring>)
```

## Arguments

### Required

- `<string>`: The string to search within.
- `<substring>`: The substring or character to search for.

## Returns

Returns a boolean value indicating whether the string contains the substring, or NULL if either argument is NULL.

## Considerations

- **Empty substring**: An empty substring returns `true` for any non-NULL string.
- **Literal matching**: Treats the `_` and `%` characters as literal characters, not wildcards.
- **Collation support**: Use collations for locale-aware matching, including case-insensitive (`_ci`) and accent-insensitive (`_ai`) options.

## Examples

### Case-Sensitive Search

Check whether a string contains a substring (case-sensitive).

```sql
SELECT contains('Hello World', 'World') AS result;
```

Returns `true`.

```sql
SELECT contains('Hello World', 'world') AS result;
```

Returns `false` because the case doesn’t match.

### Case-Insensitive Search

Check whether a string contains a substring (case-insensitive).

```sql
SELECT icontains('Hello World', 'world') AS result;
```

Returns `true` because `icontains` ignores case differences.

### NULL Handling

Returns NULL when either argument is NULL.

```sql
SELECT contains('tableau', NULL) AS result;
```

Returns `NULL`.

```sql
SELECT contains(NULL, 'water') AS result;
```

Returns `NULL`.

### Empty Substring

An empty substring is always contained in any string.

```sql
SELECT contains('tableau', '') AS result;
```

Returns `true`.

### Literal Matching

Matches the `_` and `%` characters literally, not as wildcards.

```sql
SELECT contains('Tableau', '_') AS result;
```

Returns `false` because it treats `_` as a literal underscore.

```sql
SELECT contains('Tableau_', '_') AS result;
```

Returns `true`.

### Using Collations

Use collations for locale-aware matching.

```sql
SELECT contains(name COLLATE "de_DE_ci", 'ABC') AS result
FROM products;
```

Performs a case-insensitive search using German locale rules.

```sql
SELECT contains(name COLLATE "en_US_ai", 'cafe') AS result
FROM products;
```

Performs an accent-insensitive search using the US English locale rules, matching both "cafe" and "café".

## Related Documentation

- [POSITION](https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/position.md)
- [STRPOS](https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/strpos.md)
- [String Types](https://developer.salesforce.com/docs/data/data-cloud-query-guide/datatype/string.md)
