WhereClause

AMD: require(["esri/core/sql/WhereClause"], (WhereClause) => { /* code goes here */ });
ESM: import WhereClause from "@arcgis/core/core/sql/WhereClause";
Object: esri/core/sql/WhereClause
Since: ArcGIS API for JavaScript 4.14

The WhereClause is used to extract the features that meet a specified condition by parsing the provided results in to a value. The sql.parseWhereClause() method returns a Promise that resolves to an instance of this module.

Property Overview

Name Type Summary Object
String[]more details

An array of the field names used in the where clause.

more detailsWhereClause
Booleanmore details

Returns true if the parsed where clause meets the requirements of standardized sql.

more detailsWhereClause
SQLNodemore details

A parse tree is a data structure for representing a parsed sql statement.

more detailsWhereClause

Property Details

fieldNames String[]

An array of the field names used in the where clause. It can be used to get the appropriate fields when querying layers.

Example:
// parse layer's definition expression into where clause object
sql.parseWhereClause(layer.definitionExpression, layer.fieldsIndex)
.then(function(clause){
  layer.queryFeatures({
    where: "1=1",
    // where clause object returns layer fields
    // use these fields to query features from the layer
    outFields: clause.fieldsNames
  }).then(function(results) {
   // process query results
  });
});
isStandardized Booleanreadonly

Returns true if the parsed where clause meets the requirements of standardized sql.

parseTree SQLNode
Since: ArcGIS API for JavaScript 4.24

A parse tree is a data structure for representing a parsed sql statement. Parsing a statement requires the grammar of the language that the statement was written.

See also:

Method Overview

Name Return Type Summary Object
Objectmore details

Executes the where clause against a feature to generate a value.

more detailsWhereClause
Booleanmore details

Tests the attributes of a feature against the whereClause, and returns true if the test passes, false otherwise.

more detailsWhereClause

Method Details

calculateValue(feature){Object}

Executes the where clause against a feature to generate a value. It is used when the WhereClause is being used as a simple expression. For example, you can use the expression to gather values for statistics.

Parameter:
feature Object

The feature to check against the where clause.

Returns:
Type Description
Object Returns a value after check feature against the provided where clause. Returns null if the provided value is unknown.
Example:
// calculate the grand total sales price of all features
featureLayer.queryFeatures().then(function(results){
  let total;
  const expression = "totalSales * totalPrice";
  sql.parseWhereClause(expression, layer.fieldsIndex)
  .then(function(whereClause){
    // check if the where clause meets requirements of standardized sql
    if (whereClause.isStandardized){
      features.forEach(function(feature){
        total += whereClause.calculateValue(feature)
      });
      console.log(total); // prints the total sales price of all features
    }
  });
});
testFeature(feature){Boolean}

Tests the attributes of a feature against the whereClause, and returns true if the test passes, false otherwise.

Parameter:
feature Object

The feature to test against the whereClause.

Returns:
Type Description
Boolean Returns true if the test passes, false otherwise.
Example:
sql.parseWhereClause("POPULATION > 100000", layer.fieldsIndex)
.then(function(clause){
  let testResult = clause.testFeature(new Graphic({
    attributes: {
      POPULATION: 300000
   }
 });
 console.log(testResult); // prints true
});

Type Definitions

BinaryNode Object
Since: ArcGIS API for JavaScript 4.24

A binary expression node. It is an operator that defines the way two expressions are combined to yield a single result. It can be an arithmetic operator, the assignment operator (=), a comparison operator (>=), a logical operator (AND), or a string concatenation operator (+).

Properties:
type String

The value is always "binary-expression".

operator String

Defines the way two expressions are combined to yield a single result.

Possible Values:"AND"|"OR"|"IS"|"ISNOT"|"IN"|"NOT IN"|"BETWEEN"|"NOTBETWEEN"|"LIKE"|"NOT LIKE"|"<>"|"<"|">"|">="|"<="|"="|"*"|"-"|"+"|"/"

left SQLNode

SQL node to the left of the binary node.

right SQLNode

SQL node to the right of the binary node.

escape String
optional

Escape string.

BoolNode Object
Since: ArcGIS API for JavaScript 4.24

A node that contains a boolean expression. Used for expressing a condition or criterion which can be either true or false.

Properties:
type String

The value is always "boolean".

value Boolean

Values are true or false.

ColumnNode Object
Since: ArcGIS API for JavaScript 4.24

A node that contains column name of a layer or table.

Properties:
type String

The value is always "column-reference".

column String

Column or field name.

The value is always "string".

CurrentTimeNode Object
Since: ArcGIS API for JavaScript 4.24

A node that contains CURRENT_TIME or CURRENT_DATE functions.

Properties:
type String

The value is always "current-time".

mode String

The current time node mode.

Possible Values:"timestamp"|"date"

DateNode Object
Since: ArcGIS API for JavaScript 4.24

A node that contains date.

Properties:
type String

The value is always "date".

value String

The date value.

FunctionNode Object
Since: ArcGIS API for JavaScript 4.24

A nodes that contains SQL function.

Properties:
type String

The value is always "function".

name String

Name of the SQL function.

args ListNode

Function arguments.

IntervalNode Object
Since: ArcGIS API for JavaScript 4.24

Interval node indicates that the character literal is an interval. An interval is defined as the difference between two dates and times.

Properties:
type String

The value is always "interval".

value StringNode

Interval node value.

op String

Interval node sign.

Possible Values:"+"|"-"|""

The interval qualifier can either be a single datetime field or be composed of two datetime fields, in the form: TO .

IntervalPeriodNode Object
Since: ArcGIS API for JavaScript 4.24

Interval period node.

Properties:
type String

The value is always "interval-period".

period String

Interval node periods.

Possible Values:"day"|"month"|"hour"|"second"|"year"|"minute"

precision Number
secondary String

The value is always "number".

IntervalQualifierNode Object
Since: ArcGIS API for JavaScript 4.24

Node that contains interval qualifier. The interval qualifier can either be a single datetime field or be composed of two datetime fields, in the form: <leading field> TO <trailing field>.

Properties:
type String

The value is always "interval-qualifier".

period String

Interval node periods.

Possible Values:"day"|"month"|"hour"|"second"|"year"|"minute"

precision Number

Precision for an interval data type includes interval leading precision, interval precision, and seconds precision.

secondary String

Seconds precision.

The value is always "number".

ListNode Object
Since: ArcGIS API for JavaScript 4.24

A node that contains a list.

Properties:
type String

The value is always "expression-list".

expr SQLNode

SQL expression for the list.

NullNode Object
Since: ArcGIS API for JavaScript 4.24

A node that contains NULL value.

Properties:
type String

The value is always "null".

value null

Null value.

NumberNode Object
Since: ArcGIS API for JavaScript 4.24

A node that contains number.

Properties:
type String

The value is always "number".

value Number

Numeric value.

SearchedCaseNode Object
Since: ArcGIS API for JavaScript 4.24

Node that contains case expression.

Properties:
type String

The value is always "case-expression".

format String

Case expression format. Value for this property is always searched.

The value is always "searched".

clauses WhenNode[]

When clauses.

else SQLNode

Else SQL node.

SimpleCaseNode Object
Since: ArcGIS API for JavaScript 4.24

Simple case expression node. Case expressions provide a decoding capability that allows one expression to be transformed into another. Case expressions can appear anywhere that other forms of expressions can be used.

Properties:
type String

The value is always "case_expression".

format String

The value is always "simple".

clauses WhenNode[]

When nodes.

operand SQLNode

SQL node.

else SQLNode

else sql node.

Since: ArcGIS API for JavaScript 4.24

SQL parse tree is composed of SqlNodes. It may be an operator, literal, function, list, and so forth.

StringNode Object
Since: ArcGIS API for JavaScript 4.24

A node that contains string.

Properties:
type String

The value is always "string".

value String

The string value.

TimeStampNode Object
Since: ArcGIS API for JavaScript 4.24

A node that contains date.

Properties:
type String

The value is always "timestamp".

value String

String date value.

UnaryNode Object
Since: ArcGIS API for JavaScript 4.24

A node that contains unary operator. Unary operators can be applied only to expressions that evaluate to any one of the data types of the numeric data type category.

Properties:
type String

The value is always "unary-expression".

expr SQLNode

The sql node.

WhenNode Object
Since: ArcGIS API for JavaScript 4.24

Node that contains when clause.

Properties:
type String

The value is always "when-clause".

operand SQLNode

operand.

value SQLNode

value.

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.