"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
FAQ
Does Airtable have a CONTAINS function?
No. Airtable does not have a dedicated CONTAINS() function. Use FIND() for case-sensitive checks or SEARCH() for case-insensitive checks. Both return the character position if found, or blank if not.
How do I check if a field contains one of several values?
Wrap multiple FIND() calls in OR(): IF(OR(FIND("Transcripts", {Field}), FIND("Ingest", {Field})), "Match", "No match"). For more than two or three values, use the SWITCH(TRUE(), ...) pattern for cleaner readability.
Will FIND match partial words accidentally?
Yes. FIND("VIP", {Tags}) will match both "VIP" and "VIP Gold". To avoid partial matches, pad the field and search term with comma separators: FIND(", VIP,", ", " & {Tags} & ",").
Build forms that write to Airtable automatically
If you're using formulas to process form submissions, there's a simpler way. Filla creates forms that write directly to your Airtable base, with conditional logic, linked records, and no field mapping required.
Related articles
- Split Strings of Text into Separate Fields
- IF BLANK / IF NOT BLANK Formula Patterns
- Conditional IF Formula for Status Fields
- Airtable Fields: Complete Guide to Field Types
- Split First and Last Names in Airtable
References
Community discussion on using FIND for contains logic: Operator for Contains