Copy as Markdown[Open in ChatGPT](https://chatgpt.com/?q=Read%20https%3A%2F%2Fdocs-docusaurus.kinsta.page%2Fdataprime%2Flanguage-reference%2Ffunctions-reference%2Fcases%2Fcase_contains.md%20and%20help%20me%20with%20my%20question%20about%20this%20Coralogix%20documentation%20page.)[Open in Claude](https://claude.ai/new?q=Read%20https%3A%2F%2Fdocs-docusaurus.kinsta.page%2Fdataprime%2Flanguage-reference%2Ffunctions-reference%2Fcases%2Fcase_contains.md%20and%20help%20me%20with%20my%20question%20about%20this%20Coralogix%20documentation%20page.)

# `case_contains`

## Description

Returns a value based on whether a string contains one of several specified substrings.

This function is a shorthand for `case` expressions with [\`contains()\`](https://docs-docusaurus.kinsta.page/dataprime/language-reference/functions-reference/string/contains/.md) logic and helps shorten queries that would otherwise repeat conditional statements. If no clause matches and no `_` fallback is present, `case_contains` returns `null`.

Behavior change

Earlier implementations of `case_contains` evaluated each clause with the [text match](https://docs-docusaurus.kinsta.page/dataprime/user-guide/foundations/understanding-expressions/.md) (`~`) operator instead of `contains()`, which did not match the documented behavior. `case_contains` now correctly evaluates each clause with [\`contains()\`](https://docs-docusaurus.kinsta.page/dataprime/language-reference/functions-reference/string/contains/.md) for case-sensitive substring matching. If your query relied on the previous text-match behavior, use [\`case\_find\`](https://docs-docusaurus.kinsta.page/dataprime/language-reference/functions-reference/cases/case_find/.md) instead.

Note

`case_contains` checks clauses top-to-bottom and returns the **first match**, so order matters.

## Syntax

```
case_contains {

s: string,

substring1 -> result1,

substring2 -> result2,

...

substringN -> resultN,

_          -> default

}
```

## Arguments

| Name        | Type     | Required  | Description                                   |
| ----------- | -------- | --------- | --------------------------------------------- |
| `s`         | `string` | **true**  | The string to check for substrings            |
| `substring` | `string` | **true**  | A substring to search for within `s`          |
| `result`    | `any`    | **true**  | The value to return if the substring is found |
| `_`         | `any`    | **false** | Default value if no substrings match          |

## Example

**Use case: Map cluster names to environment names**

Suppose you want to convert subsystem metadata into full environment names. Consider these log documents:

### Example data

```
{

  "cluster_name": "acme-prod-cluster"

},

{

  "cluster_name": "acme-dev-cluster"

},

{

  "cluster_name": "acme-stg-cluster"

}
```

### Example query

```
create environment_name from 

  case_contains {

    $d.cluster_name,

    '-prod-' -> 'production',

    '-dev-'  -> 'development',

    '-stg-'  -> 'staging',

    _        -> 'test'

  }
```

### Example output

```
{

  "cluster_name": "acme-prod-cluster",

  "environment_name": "production"

},

{

  "cluster_name": "acme-dev-cluster",

  "environment_name": "development"

},

{

  "cluster_name": "acme-stg-cluster",

  "environment_name": "staging"

}
```
