Help

Re: TRUE/FALSE SWITCH statement

1787 0
cancel
Showing results for 
Search instead for 
Did you mean: 
Casey
6 - Interface Innovator
6 - Interface Innovator

Could someone help me understand why this formula throws an error?

SWITCH(1=1,TRUE,“Y”,FALSE,“N”)

Thanks.

3 Replies 3

TRUE and FALSE aren’t possible outcomes of the expression you are trying to evaluation (1=1). That’s why your formula there is failing.

If you put just 1=1 as a formula into a formula field, you’ll get a return value of 1, which is the numeric equivalent of true.

If you put just 1=2 as a formula into a formula field, you’ll get a return value of 0, which is the numeric equivalent of false.

However, Airtable’s SWITCH() function appears to not even be able to evaluate this correctly either:

SWITCH(
   1 = 1,
   1, "Y",
   0, "N"
)

Which is odd… but, a SWITCH() statement is really not the best option for a binary/boolean comparison anyhow – it’s a bit overkill, since it’s meant to handle more than just either/or outcomes for an expression.

You can get the outcome you want with a simple IF() statement:

IF(
   1 = 1,
   "Y",
   "N"
)

Thank you, I did have a more complex use in mind.
It does seem though, that SWITCH does not accept logical conditions in this manner.

sistemas_urbita
6 - Interface Innovator
6 - Interface Innovator

A very common coding pattern is to pass a "true" to switch and test multiple conditions to run the first to return true, but I couldn't get it to work on airtable formulas:

 

switch(TRUE(),
    REGEX_MATCH(data,regex1), 'one matches',
    REGEX_MATCH(data,regex2), 'two matches',
    REGEX_MATCH(data,regex3), 'three matches',
    'none matches'
)

 

changing true() to 1 doesn't help. I ended up having to use a bunch of nested IFs...

IF(REGEX_MATCH(data,regex1),
  'one matches',
  IF(REGEX_MATCH(data,regex2),
    'two matches',
    IF( REGEX_MATCH(data,regex3),
      'three matches',
      'none matches'
    )
  )
)

 but this seems to be a limitation in the way Switch is implemented. 

Hope this helps

Cheers