"Contains" check in formulas
Airtable doesn't have a CONTAINS operator. Use FIND() or SEARCH() to check if a field contains specific text.
FIND() — case-sensitive
Use FIND() when you need exact case matching.
IF(FIND("Transcripts", {Production Pipeline}), {Assignee})
How it works:
- Returns the position (1, 2, 3...) if found
- Returns empty/blank if not found
- In an
IF(), any number (truthy) means "found", empty means "not found" - Case-sensitive:
FIND("Transcripts", "transcripts")returns empty
Example with multiple conditions:
IF(
FIND("Transcripts", {Production Pipeline}),
{Assignee},
IF(
FIND("Media Delivery", {Production Pipeline}),
"Media Coordinator",
""
)
)
SEARCH() — case-insensitive
Use SEARCH() when you want to ignore case differences.
IF(SEARCH("transcripts", {Production Pipeline}), {Assignee})
How it works:
- Same return pattern as
FIND()(position if found, empty if not) - Case-insensitive:
SEARCH("transcripts", "Transcripts")finds a match - Useful when users might enter values in different cases
Multiple select fields
In Multiple select fields, values are comma-separated strings. Both FIND() and SEARCH() work on these:
IF(FIND("Media Delivery", {Production Pipeline}), "Media Coordinator")
This matches if "Media Delivery" appears anywhere in the comma-separated list.
Avoid partial matches
If choice values might overlap (e.g., "VIP" vs "VIP Gold"), pad with separators:
IF(
FIND(", Transcripts,", ", " & {Production Pipeline} & ", "),
{Assignee}
)
This ensures you're matching whole tokens, not substrings.
Common patterns
Check multiple values
IF(
OR(
FIND("Transcripts", {Production Pipeline}),
FIND("Ingest", {Production Pipeline})
),
{Assignee}
)
Return different values based on contains
SWITCH(
TRUE(),
FIND("Transcripts", {Production Pipeline}), {Assignee},
FIND("Media Delivery", {Production Pipeline}), "Media Coordinator",
FIND("Ingest", {Production Pipeline}), "Media Coordinator",
""
)
Case-insensitive with fallback
IF(
SEARCH("transcripts", LOWER({Production Pipeline})),
{Assignee},
"Default Value"
)
Comparison: FIND vs SEARCH
| Function | Case-sensitive | Returns | Use when |
|---|---|---|---|
FIND() |
Yes | Position or empty | You need exact case matching |
SEARCH() |
No | Position or empty | Case shouldn't matter |
Both return empty when the substring isn't found, making them work directly in IF() conditions.
Why not = or !=?
=checks for exact equality!=checks for inequality- Neither checks if text "contains" a substring
For "contains" logic, use FIND() or SEARCH().
Tips
- Use
FIND()by default for exact matching - Use
SEARCH()when user input varies in case - Combine with
LOWER()for consistent case-insensitive matching - Pad with separators when you need whole-word/token matching
References
Community discussion on using FIND for contains logic: Operator for Contains