Blog

Airtable Contains Formula: FIND vs SEARCH Explained

FE
Filla EditorialbeginnerOct 31, 2025

"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"
)

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.

Create your first form free →



References

Community discussion on using FIND for contains logic: Operator for Contains