Community Spring Cleaning week is here! Join your fellow Maveryx in digging through your old posts and marking comments on them as solved. Learn more here!

Alteryx Designer Desktop Discussions

Find answers, ask questions, and share expertise about Alteryx Designer Desktop and Intelligence Suite.
SOLVED

Case sensitive string comparison

jason_scarlett
10 - Fireball

I am comparing two string fields in a Filter tool and getting unexpected results.

 

When I use the Filter tool to compare two strings with values of "Extendicare Fort MacLeod" and "Extendicare Fort Macleod" (note the lowercase "L" in the second), the tool returns these as being equal. i.e. [FAC_NAME]==[FAC_NAME_BAD] returns true.

 

How do I do a string comparison that is Case Sensitive?

 

Ideas: https://community.alteryx.com/t5/Alteryx-Product-Ideas/Inconsistency-about-case-sensitivity-across-t...

9 REPLIES 9
MarqueeCrew
20 - Arcturus
20 - Arcturus

Wow @jason_scarlett!

 

I was unaware of that feature.  Here's a sure-fire way to compare:

 

MD5_ASCII([FAC_NAME])==MD5_ASCII([FAC_NAME_BAD])

Cheers,

Mark

Alteryx ACE & Top Community Contributor

Chaos reigns within. Repent, reflect and restart. Order shall return.
Please Subscribe to my youTube channel.
jason_scarlett
10 - Fireball

Perfect, works now.

NicoleJohnson
ACE Emeritus
ACE Emeritus

One more way to skin the cat, because RegEx is almost always a solution too... :)

 

REGEX_Match([Field1],[Field2],0)

 

The 0 after the two fields you're comparing indicates that it needs to be Case Sensitive. Leaving that clause out (or having it equal to 1) lets the match become Case Insensitive.

 

Cheers!

NJ

MarqueeCrew
20 - Arcturus
20 - Arcturus

@jason_scarlett,

 

Please mark @NicoleJohnson as a solution for this post.  Her solution is FASTER than mine.  I tested hers with 1,000,000 records and RegEx completes the comparison filter in less than 1 second.  The conversion to the MD5 hash and evaluation takes roughly 8 seconds.

 

Cheers,
Mark

Alteryx ACE & Top Community Contributor

Chaos reigns within. Repent, reflect and restart. Order shall return.
Please Subscribe to my youTube channel.
Di2g10
7 - Meteor

I don't think this will work in the more general case. As regex special characters will cause problems for example '(',')' Since they won't be escaped in a standard string. I think the ASCll Solution is more robust.

Please correct me if i am wrong.

ejthoms
5 - Atom

@nicolejohnson Life changing! Thank you!

etechman
8 - Asteroid

I feel like I learned a lot from this one. 

PaA
5 - Atom

@Di2g10 is right.. regex cannot handle special characters... I would suggest Contains as it has switch for case sensitivity too... 

Contains([b], [a],0) AND Length([a]) == Length([b])

or 

Contains([b], [a],0) AND Contains([a], [b],0)

//to make it more obvious..

btw. MD5 hash cannot guarantee to have 2 different hashes for every 2 inputs, so it can fail and it is terribly unpredictable (not to mention slow).

Di2g10
7 - Meteor

I agree this is a better solution to the others proposed (outside of Alteryx fixing what is feel is a bug)

Labels