# \*\*Baserow formula breaking change\*\* Introducing null values and automatic coercion

**URL:** https://community.baserow.io/t/baserow-formula-breaking-change-introducing-null-values-and-automatic-coercion/2306
**Category:** Announcements
**Tags:** brainstorm, contribute, formula
**Created:** [February 23, 2023, 5:22pm UTC](https://community.baserow.io/t/baserow-formula-breaking-change-introducing-null-values-and-automatic-coercion/2306 "2023-02-23T17:22:56Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![davide](https://community.baserow.io/user_avatar/community.baserow.io/davide/32/2425_2.png) [@davide](https://community.baserow.io/u/davide)
#### Post date: [February 23, 2023, 5:22pm UTC](https://community.baserow.io/t/baserow-formula-breaking-change-introducing-null-values-and-automatic-coercion/2306/1 "2023-02-23T17:22:56Z")

</div>

Hey it’s Davide here, the Baserow dev 👋

In the next release of Baserow we will be adding automatic null coercion/replacement for arguments passed to Baserow formula functions.  
We are asking for feedback on this change.  
Please let us know if it will cause you problems or if you are all for it.

**Where do null values come from currently**

In the following situations it is possible to introduce nulls into a Baserow formula:

- A date field with no date selected
- A single select field with no single select selected
- A text/long text/email/telephone/url field which has been explicitly set to null by a manual API call.
- Some formula functions like `error_to_null`, `todate` with an invalid date string as argument, `date_interval` with an invalid interval as argument

**Examples of the proposed change**

Before: `null + 'a' = null`  
After: `null + 'a' = 'a'`  
Before: `null + date = null`  
After: `null + date = date`

**Some Motivation**

We want the Baserow formula language to be easily used and understood by non-technical users. Right now there is confusion introduced by null and how it interacts with non null values.  
We hope that by adding automatic null coercion we can make the formulas behave in a more intuitive manner when dealing with null values and also reduce the boilerplate you need to write when working with nulls.

**Workarounds for maintaining old behavior**

If you really want to continue with the old behavior then please:  
Let us know why it is useful for you by replying below 🙏

You can use the `isnull` function to detect null values before they are passed into functions. You can then choose what you would like the output to be using the if function.

**Caveats**  
Not all functions will automatically replace nulls with blank values, the following do not:

- when\_blank (will soon be renamed to `when_null` for consistency)
- isnull
- equal,greatest,least
- if

For some types of data there is no sensible blank default to swap nulls with, so we do not. These are:

- Dates
- Single selects

So you will continue to see the following behavior:  
`null date + date_interval('1 day') = null date`  
`get_single_select_value(null single select) = null text`

**New _`isnull`_ function**

We’ll also introduce a new `isnull` function.  
We have introduced the new `isnull` function which lets you detect null values explicitly.  
The main difference with `isblank` is that `isblank` returns `true` also for empty strings, a number 0 or a date\_interval(‘0 hours’), while `isnull` returns `true` only if the function returns null or for empty cells.
