content/shared/sql-reference/operators/comparison.md
Comparison operators evaluate the relationship between the left and right
operands and returns true or false.
| Operator | Meaning | |
|---|---|---|
= | Equal to | {{< icon "link" >}} |
<> | Not equal to | {{< icon "link" >}} |
!= | Not equal to | {{< icon "link" >}} |
> | Greater than | {{< icon "link" >}} |
>= | Greater than or equal to | {{< icon "link" >}} |
< | Less than | {{< icon "link" >}} |
<= | Less than or equal to | {{< icon "link" >}} |
IS DISTINCT FROM | Is distinct from | {{< icon "link" >}} |
IS NOT DISTINCT FROM | Is not distinct from | {{< icon "link" >}} |
~ | Matches a regular expression | {{< icon "link" >}} |
~* | Matches a regular expression (case-insensitive) | {{< icon "link" >}} |
!~ | Does not match a regular expression | {{< icon "link" >}} |
!~* | Does not match a regular expression (case-insensitive) | {{< icon "link" >}} |
The = operator compares the left and right operands and, if equal, returns true.
Otherwise returns false.
{{< flex >}} {{% flex-content "two-thirds operator-example" %}}
SELECT 123 = 123
{{% /flex-content %}} {{% flex-content "third operator-example" %}}
| Int64(123) = Int64(123) |
|---|
| true |
{{% /flex-content %}} {{< /flex >}}
The != and <> operators compare the left and right operands and, if not equal,
returns true. Otherwise returns false.
{{< flex >}} {{% flex-content "two-thirds operator-example" %}}
SELECT 123 != 456
{{% /flex-content %}} {{% flex-content "third operator-example" %}}
| Int64(123) != Int64(456) |
|---|
| true |
{{% /flex-content %}} {{< /flex >}}
{{< flex >}} {{% flex-content "two-thirds operator-example" %}}
SELECT 123 <> 456
{{% /flex-content %}} {{% flex-content "third operator-example" %}}
| Int64(123) != Int64(456) |
|---|
| true |
{{% /flex-content %}} {{< /flex >}}
The > operator compares the left and right operands and, if the left operand
is greater than the right operand, returns true.
Otherwise returns false.
{{< flex >}} {{% flex-content "two-thirds operator-example" %}}
SELECT 3 > 2
{{% /flex-content %}} {{% flex-content "third operator-example" %}}
| Int64(3) > Int64(2) |
|---|
| true |
{{% /flex-content %}} {{< /flex >}}
The >= operator compares the left and right operands and, if the left operand
is greater than or equal to the right operand, returns true.
Otherwise returns false.
{{< flex >}} {{% flex-content "two-thirds operator-example" %}}
SELECT 3 >= 2
{{% /flex-content %}} {{% flex-content "third operator-example" %}}
| Int64(3) >= Int64(2) |
|---|
| true |
{{% /flex-content %}} {{< /flex >}}
The < operator compares the left and right operands and, if the left operand
is less than the right operand, returns true.
Otherwise returns false.
{{< flex >}} {{% flex-content "two-thirds operator-example" %}}
SELECT 1 < 2
{{% /flex-content %}} {{% flex-content "third operator-example" %}}
| Int641(1) < Int64(2) |
|---|
| true |
{{% /flex-content %}} {{< /flex >}}
The <= operator compares the left and right operands and, if the left operand
is less than or equal to the right operand, returns true.
Otherwise returns false.
{{< flex >}} {{% flex-content "two-thirds operator-example" %}}
SELECT 1 <= 2
{{% /flex-content %}} {{% flex-content "third operator-example" %}}
| Int641(1) <= Int64(2) |
|---|
| true |
{{% /flex-content %}} {{< /flex >}}
The IS DISTINCT FROM operator is a NULL-safe operator that returns
true if both operands are not equal; otherwise, it returns false.
This operator guarantees the result of a comparison is true or false and not
an empty set.
{{< flex >}} {{% flex-content "two-thirds operator-example" %}}
SELECT 0 IS DISTINCT FROM NULL
{{% /flex-content %}} {{% flex-content "third operator-example" %}}
| Int64(0) IS DISTINCT FROM NULL |
|---|
| true |
{{% /flex-content %}} {{< /flex >}}
The IS NOT DISTINCT FROM operator is a NULL-safe operator that returns
true if both operands are equal or NULL; otherwise, it returns false.
This operator negates IS DISTINCT FROM.
{{< flex >}} {{% flex-content "two-thirds operator-example" %}}
SELECT NULL IS NOT DISTINCT FROM NULL
{{% /flex-content %}} {{% flex-content "third operator-example" %}}
| NULL IS NOT DISTINCT FROM NULL |
|---|
| true |
{{% /flex-content %}} {{< /flex >}}
<!-- IS NOT SUPPORTED YET ## <=> {#three-way-comparison .monospace} The `<=>` operator is a _NULL_-safe operator that returns `true` if both operands are equal or _NULL_; otherwise, it returns `false`. This operator is an alias for [`IS NOT DISTINCT FROM`](#is-not-distinct-from). {{< expand-wrapper >}} {{% expand "View `<=>` operator examples" %}} {{< flex >}} {{% flex-content "two-thirds operator-example" %}} ```sql SELECT NULL <=> NULL ``` {{% /flex-content %}} {{% flex-content "third operator-example" %}} | NULL IS NOT DISTINCT FROM NULL | | :----------------------------- | | true | {{% /flex-content %}} {{< /flex >}} {{< flex >}} {{% flex-content "two-thirds operator-example" %}} ```sql SELECT 1 <=> NULL ``` {{% /flex-content %}} {{% flex-content "third operator-example" %}} | Int64(1) IS NOT DISTINCT FROM NULL | | :--------------------------------- | | false | {{% /flex-content %}} {{< /flex >}} {{< flex >}} {{% flex-content "two-thirds operator-example" %}} ```sql SELECT 1 <=> 2 ``` {{% /flex-content %}} {{% flex-content "third operator-example" %}} | Int64(1) IS NOT DISTINCT FROM Int64(2) | | :------------------------------------- | | false | {{% /flex-content %}} {{< /flex >}} {{< flex >}} {{% flex-content "two-thirds operator-example" %}} ```sql SELECT 1 <=> 1 ``` {{% /flex-content %}} {{% flex-content "third operator-example" %}} | Int64(1) IS NOT DISTINCT FROM Int64(1) | | :------------------------------------- | | true | {{% /flex-content %}} {{< /flex >}} {{% /expand %}} {{< /expand-wrapper >}} -->The ~ operator compares the left string operand to the right regular expression
operand and, if it matches (case-sensitive), returns true.
Otherwise returns false.
{{< flex >}} {{% flex-content "two-thirds operator-example" %}}
SELECT 'abc' ~ 'a.*'
{{% /flex-content %}} {{% flex-content "third operator-example" %}}
| Utf8("abc") ~ Utf8("a.*") |
|---|
| true |
{{% /flex-content %}} {{< /flex >}}
The ~* operator compares the left string operand to the right regular expression
operand and, if it matches (case-insensitive), returns true.
Otherwise returns false.
{{< flex >}} {{% flex-content "two-thirds operator-example" %}}
SELECT 'Abc' ~* 'A.*'
{{% /flex-content %}} {{% flex-content "third operator-example" %}}
| Utf8("Abc") ~* Utf8("A.*") |
|---|
| true |
{{% /flex-content %}} {{< /flex >}}
The !~ operator compares the left string operand to the right regular expression
operand and, if it does not match (case-sensitive), returns true.
Otherwise returns false.
{{< flex >}} {{% flex-content "two-thirds operator-example" %}}
SELECT 'abc' !~ 'd.*'
{{% /flex-content %}} {{% flex-content "third operator-example" %}}
| Utf8("abc") !~ Utf8("d.*") |
|---|
| true |
{{% /flex-content %}} {{< /flex >}}
The !~* operator compares the left string operand to the right regular expression
operand and, if it does not match (case-insensitive), returns true.
Otherwise returns false.
{{< flex >}} {{% flex-content "two-thirds operator-example" %}}
SELECT 'Abc' !~* 'a.*'
{{% /flex-content %}} {{% flex-content "third operator-example" %}}
| Utf8("Abc") !~* Utf8("a.*") |
|---|
| false |
{{% /flex-content %}} {{< /flex >}}