# Entity SQL reference

This section contains Entity SQL reference articles. This article summarizes and groups the Entity SQL operators by category.

## Arithmetic operators

Arithmetic operators perform mathematical operations on two expressions of one or more numeric data types. The following table lists the Entity SQL arithmetic operators:

Operator Use
/ (Divide) Division.
% (Modulo) Returns the remainder of a division.
* (Multiply) Multiplication.
- (Negative) Negation.
- (Subtract) Subtraction.

## Canonical functions

Canonical functions are supported by all data providers and can be used by all querying technologies. The following table lists the canonical functions:

Function Type
Aggregate Entity SQL Canonical Functions Discusses aggregate Entity SQL canonical functions.
Math Canonical Functions Discusses math Entity SQL canonical functions.
String Canonical Functions Discusses string Entity SQL canonical functions.
Date and Time Canonical Functions Discusses date and time Entity SQL canonical functions.
Bitwise Canonical Functions Discusses bitwise Entity SQL canonical functions.
Other Canonical Functions Discusses functions not classified as bitwise, date/time, string, math, or aggregate.

## Comparison operators

Comparison operators are defined for the following types: Byte, Int16, Int32, Int64, Double, Single, Decimal, String, DateTime, Date, Time, DateTimeOffset. Implicit type promotion occurs for the operands before the comparison operator is applied. Comparison operators always yield Boolean values. When at least one of the operands is null, the result is null.

Equality and inequality are defined for any object type that has identity, such as the Boolean type. Non-primitive objects with identity are considered equal if they share the same identity. The following table lists the Entity SQL comparison operators:

Operator Description
= (Equals) Compares the equality of two expressions.
> (Greater Than) Compares two expressions to determine whether the left expression has a value greater than the right expression.
>= (Greater Than or Equal To) Compares two expressions to determine whether the left expression has a value greater than or equal to the right expression.
IS [NOT] NULL Determines if a query expression is null.
< (Less Than) Compares two expressions to determine whether the left expression has a value less than the right expression.
<= (Less Than or Equal To) Compares two expressions to determine whether the left expression has a value less than or equal to the right expression.
[NOT] BETWEEN Determines whether an expression results in a value in a specified range.
!= (Not Equal To) Compares two expressions to determine whether the left expression isn't equal to the right expression.
[NOT] LIKE Determines whether a specific character string matches a specified pattern.

## Logical and case expression operators

Logical operators test for the truth of a condition. The CASE expression evaluates a set of Boolean expressions to determine the result. The following table lists the logical and CASE expression operators:

Operator Description
&& (Logical AND) Logical AND.
! (Logical NOT) Logical NOT.
|| (Logical OR) Logical OR.
CASE Evaluates a set of Boolean expressions to determine the result.
THEN The result of a WHEN clause when it evaluates to true.

## Query operators

Query operators are used to define query expressions that return entity data. The following table lists query operators:

Operator Use
FROM Specifies the collection that is used in SELECT statements.
GROUP BY Specifies groups into which objects that are returned by a query (SELECT) expression are to be placed.
GroupPartition Returns a collection of argument values, projected off the group partition to which the aggregate is related.
HAVING Specifies a search condition for a group or an aggregate.
LIMIT Used with the ORDER BY clause to performed physical paging.
ORDER BY Specifies the sort order that is used on objects returned in a SELECT statement.
SELECT Specifies the elements in the projection that are returned by a query.
SKIP Used with the ORDER BY clause to performed physical paging.
TOP Specifies that only the first set of rows will be returned from the query result.
WHERE Conditionally filters data that is returned by a query.

## Reference operators

A reference is a logical pointer (foreign key) to a specific entity in a specific entity set. Entity SQL supports the following operators to construct, deconstruct, and navigate through references:

Operator Use
CREATEREF Creates references to an entity in an entity set.
DEREF Dereferences a reference value and produces the result of that dereference.
KEY Extracts the key of a reference or of an entity expression.
NAVIGATE Allows you to navigate over the relationship from one entity type to another
REF Returns a reference to an entity instance.

## Set operators

Entity SQL provides various powerful set operations. This includes set operators similar to Transact-SQL operators such as UNION, INTERSECT, EXCEPT, and EXISTS. Entity SQL also supports operators for duplicate elimination (SET), membership testing (IN), and joins (JOIN). The following table lists the Entity SQL set operators:

Operator Use
ANYELEMENT Extracts an element from a multivalued collection.
EXCEPT Returns a collection of any distinct values from the query expression to the left of the EXCEPT operand that aren't also returned from the query expression to the right of the EXCEPT operand.
[NOT] EXISTS Determines if a collection is empty.
FLATTEN Converts a collection of collections into a flattened collection.
[NOT] IN Determines whether a value matches any value in a collection.
INTERSECT Returns a collection of any distinct values that are returned by both the query expressions on the left and right sides of the INTERSECT operand.
OVERLAPS Determines whether two collections have common elements.
SET Used to convert a collection of objects into a set by yielding a new collection with all duplicate elements removed.
UNION Combines the results of two or more queries into a single collection.

## Type operators

Entity SQL provides operations that allow the type of an expression (value) to be constructed, queried, and manipulated. The following table lists operators that are used to work with types:

Operator Use
CAST Converts an expression of one data type to another.
COLLECTION Used in a FUNCTION operation to declare a collection of entity types or complex types.
IS [NOT] OF Determines whether the type of an expression is of the specified type or one of its subtypes.
OFTYPE Returns a collection of objects from a query expression that is of a specific type.
Named Type Constructor Used to create instances of entity types or complex types.
MULTISET Creates an instance of a multiset from a list of values.
ROW Constructs anonymous, structurally typed records from one or more values.
TREAT Treats an object of a particular base type as an object of the specified derived type.

## Other operators

The following table lists other Entity SQL operators:

Operator Use
+ (String Concatenation) Used to concatenate strings in Entity SQL.
. (Member Access) Used to access the value of a property or field of an instance of structural conceptual model type.
-- (Comment) Include Entity SQL comments.
FUNCTION Defines an inline function that can be executed in an Entity SQL query.