search(@in, [for: const string]+) -> bool
search(in: searchable, [for: const string]+) -> bool

Returns true when every supplied search term appears in the haystack, using case-insensitive substring matching. The first argument is either a searchable value (string, object, or variant) or the current dataset reference @ to scan all searchable columns on the row; the latter rejects a non-empty foreign dataset name. Additional arguments are string literals joined as an AND of substrings. Non-string haystack fields are cast to string for matching. When searching an entire row, null column values are coalesced to empty text inside the concatenated haystack, which can make matches succeed where a direct column comparison would see null; single-column search does not apply that coalesce. An empty literal term is treated as trivially present everywhere, including against null-only haystacks in row mode.

Domain

This is a scalar function (calculates a single output value for a single input row).

Categories

Examples

filter search(message_body, "timeout", "connection")

Requires both substrings to appear somewhere in message_body, ignoring letter case, before the row is kept.

filter search(@, "customer-123")

Uses the whole-row form so the token must appear in at least one searchable column on the current dataset.