Case-sensitive check of USEREMAIL() against list

Recently I came across a thread related to checking USEREMAIL() against a list of email records, and it was mentioned that the check may fail due to difference between uppercase and lowercase characters.

Has anybody dealt with this issue before? Is there a robust solution? My opinion is that it would be helpful a list-expression that converts into LOWER-case or UPPER-case all the text records in the list. But it doesnโ€™t seem to exist. Alternatively, one should implement an hack like forcing user inputed emails to be lowercase or uppercase, but Iโ€™d prefer the first solution.

Using such a function, I could write:

IN(LOWER(USEREMAIL()), LOWER(SELECT(Users[Email]), [Role] = "Manager")))

Any ideas? Should I raise a feature request?

Solved Solved
0 12 725
1 ACCEPTED SOLUTION

Okay, got it. Thank you. I believe your formula will work in that case. I misread your requirement that you wanted to validate emails only in one of the cases-lower or higher.

View solution in original post

12 REPLIES 12

Maybe you are looking for something else. In general, the following expression will create a list with all lower case elements?

SPLIT(LOWER(Table Name[Text Column with Upper Lower Case Contents]), " , "))

Thanks for your answer. However I set up a test-case, and unfortunately I havenโ€™t been able yet to reproduce the fail of my formula (which was only hypothetical). I am investigating furtherโ€ฆ

Could you please elaborate on what you are trying to achieve with the expression? I mean where you would like this expression to use? In the valid if , for example?

Correct, I am using it in the valid if expression

Thank you. So, if user enters a mixed case email, then it should be invalidated ? And it needs to be validated only if he enters the email either in upper case of lower case that exists in the list?

No, sorry I see that my first post was all but clear. I was wondering if I needed to update my formula below, in order to apply a security filter based on roles. The formula should be valid if the email differs only by case: e.g. it should be valid if USEREMAIL() = abc@de.fg and the table contains Abc@de.fg.
Apparently, my formula is working well, but according to my expectations, it should not:

IN(USEREMAIL(), SELECT(Users[Email], [Role] = "Manager"))

Okay, got it. Thank you. I believe your formula will work in that case. I misread your requirement that you wanted to validate emails only in one of the cases-lower or higher.

Just for the sake of completeness, also this formula is valid when comparing abc@de.fg with AbC@de.fg :

USEREMAIL() = [Sales Person].[Email]

I think the AppSheet Team did some nice trick behind the scenes, in order to make it work!

as far as I know the expression working based on โ€œcase sensitiveโ€ is FIND() expression.
Rest of expressions will treat the large/small text equally for years.
I believe there has been no change in terms of this.

Steve
Platinum 4
Platinum 4

Incorrect. Uppercase and lowercase are equivalent.

Yep.

Yep.

Thank you @Steve !
For curiosity, if I compare the above mentioned strings in other situations, does the equality operator consider them equivalent or not?

In each of these cases, upper- and lowercase do not matter:

Is that what youโ€™re asking?

Top Labels in this Space