Blog

Airtable: How to Use 'Contains' in Formulas (FIND vs SEARCH)

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

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

Airtable: How to Use 'Contains' in Formulas (FIND vs SEARCH)