Berserk Docs
Scalar FunctionsDynamic / JSON Functions

column_ifexists

If a column named `column_name` exists in the current row set, return its value for the current row; otherwise evaluate and return `default`.

Resolved at query compile time, so the column name must be a constant string and the default's type is ignored when the column exists.

Syntax

column_ifexists(column_name, default)

Parameters

Prop

Type

Given a dynamic field

This parameter is string-only. In permissive mode — the default — almost every field arrives as a dynamic, so passing one works because Berserk injects asstring: extract-or-null, the value when it really is a string and null otherwise, so the call yields null (a predicate yields false). A property bag or array is therefore not matched, and tostring() is never applied implicitly — use it explicitly to match a bag's JSON text, keys included. Strict mode rejects the dynamic instead of coercing it. See String coercion and the asXXX family.

Returns: any

Examples

Example 1

datatable(a:int)[
  1,
  2,
  3
]
| project resolved = column_ifexists("a", 0), missing = column_ifexists("nope", -1)
resolved (int)missing (long)
1-1
2-1
3-1

On this page