DataWeave : Equality operator (~=)

DataWeave : Equality operator  (~=)

Equality Operator (~=):

Equality operator that tries to coerce one value to the type of the other when the types are different.

Use Case :

Equality operator is more useful whenever we need to compare two values which are in different types.

~= operator evaluates if two values are similar, regardless of their type.

Example :

the string "12345" and the number 12345 are not similar types but they are recognized as similar values.

On a converse , == operator checks both the type and value at the time of comparison

Code :

Case 1:

comparing String with Boolean :

{
   //  Equality operator  ~=
eq1: true ~= "true",
eq2: true ~= "True",
eq3: true ~= "tRue",
eqA: [true] ~= ["true"],

eq4: false ~= "false",
eq5: false ~= "False",
eq6: false ~= "faLse",
eqAF: [false] ~= ["false"],

    //  Equal operator ==
 equal1: true == "true",
 equal2: false == "false",
 eqA: [true] == ["true"],
 eqAF: [false] == ["false"],


}

Output :

{
   //  Equality operator  ~=
  "eq1": true,
  "eq2": true,
  "eq3": true,
  "eqA": true,

  "eq4": true,
  "eq5": true,
  "eq6": true,
  "eqAF": true,

    //  Equal operator ==

  "equal1": false,
  "equal2": false,
  "eqA": false,
  "eqAF": false
}

case 2 :

comparing string with Number :

{
    // Equality operator  ~=
eq1: 12345 ~= "12345",
eq2: 12345 ~= "12345.00",
eqA1 : [12345] ~= ["12345"],
eqA2: [12345] ~= ["12345.00"],

    //  Equal operator ==
equal1: 12345 == "12345",
equal2: 12345 == "12345.0",
equal3 : [12345] ~= ["12345"],
equal14: [12345] ~= ["12345.00"],

}

Output :

{
    // Equality operator  ~=
  "eq1": true,
  "eq2": true,
  "eqA1": true,
  "eqA2": true,

    //  Equal operator ==

  "equal1": false,
  "equal2": false,
  "equal3": true,
  "equal14": true
}

This is mostly useful while making decisions in choice-router and transform messages

Thank you for taking out time to read the above post. Hope you found it useful. In case of any questions, feel free to comment below. Also, if you are keen on knowing about a specific topic, happy to explore your recommendations as well.

#mulesoft #dataweave #dw #anypointstudio #mule #muleEsb #equality #equal