Class TExpression
- Namespace
- gudusoft.gsqlparser.nodes
- Assembly
- gudusoft.gsqlparser.dll
An expression is a combination of one or more values, operators, and SQL functions that evaluates to a value. There are lots of types of expression in this SQL parser, ExpressionType was used to distinguish these types.
OBJECT NAME/CONSTANT/SOURCE TOKEN/FUNCTION CALL
- object name, usually this is a column reference like emp.ename
- type: simple_object_name_t
- object name: ObjectOperand
- left operand: N/A
- right operand: N/A
- operator: N/A
- constant
- type: simple_constant_t
- constant: ConstantOperand
- left operand: N/A
- right operand: N/A
- operator: N/A
- sourcetoken
- type: simple_source_token_t
- source token: SourcetokenOperand
- left operand: N/A
- right operand: N/A
- operator: N/A
- function call
- type: function_t
- funcation call: FunctionCall
- left operand: N/A
- right operand: N/A
- operator: N/A
UNARY
<ul>
<li> + expr1
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_plus_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: getRightOperand</li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
<li> - expr1
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_minus_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: getRightOperand</li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
<li> expr1 !
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_factorial_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: N/A</li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
<li> ~ expr1
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_bitwise_not_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref></li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
<li> @ expr1
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_absolutevalue_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref></li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
<li> |/ expr1
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_squareroot_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref></li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
<li> ||/ expr1
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_cuberoot_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref></li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
<li> !! expr1
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_factorialprefix_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref></li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
<li> Oracle: PRIOR expr1
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_prior_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: getRightOperand</li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
<li> Oracle: CONNECT_BY_ROOT expr1
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_connect_by_root_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: getRightOperand</li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
<li> MySQL: BINARY expr1
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_prior_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: getRightOperand</li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
</ul>
ARITHMETIC
<ul>
<li>Addition: expr1 + expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.arithmetic_plus_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li>Subtraction: expr1 - expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.arithmetic_minus_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li>Multiplication: expr1 * expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.arithmetic_times_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li>Division: expr1 / expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.arithmetic_divide_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li>Modula: expr1 % expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.arithmetic_modulo_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li>exponentiate: expr1 ^ expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.exponentiate_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li>sql server 2008 +=,-=,*=,/=,%=: expr1 [+=|-=|*=|/=|%=] expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.arithmetic_compound_operator_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
</ul>
LOGICAL
<ul>
<li>expr1 AND|&& expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.logical_and_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li>expr1 OR | || expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.logical_or_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li>expr1 XOR expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.logical_xor_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li>NOT|! expr1
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.logical_not_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
</ul>
ASSIGNMENT
<ul>
<li>ASSIGNMENT: expr1 [:=|=] expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.assignment_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
</ul>
CONCATENATE
<ul>
<li>CONCATENATE: expr1 || expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.concatenate_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
</ul>
AT TIME ZONE
<ul>
<li>expr1 at time zone expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.at_time_zone_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: N/A</li>
</ul>
</li>
</ul>
AT LOCAL
<ul>
<li>expr1 at local
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.at_local_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: N/A </li>
<li>operator: N/A</li>
</ul>
</li>
</ul>
BITWISE
<ul>
<li>Bitwise and : expr1 & expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.bitwise_and_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li>Bitwise or : expr1 | expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.bitwise_or_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li>Bitwise exclusive or : expr1 ^ expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.bitwise_exclusive_or_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li>Bitwise xor : expr1 ^ expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.bitwise_xor_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li>Bitwise shift left : expr1 << expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.bitwise_shift_left_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li>Bitwise shift right : expr1 >> expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.bitwise_shift_right_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
</ul>
SUBQUERY
<ul>
<li> A scalar subquery expression is a subquery that returns exactly one column value from one row.
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.subquery_t" data-throw-if-not-resolved="false"></xref></li>
<li>subquery: <xref href="gudusoft.gsqlparser.nodes.TExpression.SubQuery" data-throw-if-not-resolved="false"></xref> </li>
<li>left operand: N/A</li>
<li>right operand: N/A </li>
<li>operator: N/A</li>
</ul>
</li>
</ul>
EXPRESSION WITH PARENTHESIS
<ul>
<li> ( expr1 )
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.parenthesis_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand is expr1: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: N/A </li>
<li>operator: use <xref href="gudusoft.gsqlparser.nodes.TParseTreeNode.startToken" data-throw-if-not-resolved="false"></xref> to get ( and <xref href="gudusoft.gsqlparser.nodes.TParseTreeNode.endToken" data-throw-if-not-resolved="false"></xref> to get )</li>
</ul>
</li>
</ul>
LIST EXPRESSION
<ul>
<li>An expression list inside parenthesis like (expr,expr,...),
or one or more set of expressions: ((expr1,expr2,...),(expr1,expr2,...),(expr1,expr2,...)...)
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.list_t" data-throw-if-not-resolved="false"></xref></li>
<li>expr list: <xref href="gudusoft.gsqlparser.nodes.TExpression.ExprList" data-throw-if-not-resolved="false"></xref>, may return null when expression list in syntax like this: () </li>
<li>left operand: N/A</li>
<li>right operand: N/A </li>
<li>operator: open parenthsis ( can be fetched via <xref href="gudusoft.gsqlparser.nodes.TParseTreeNode.startToken" data-throw-if-not-resolved="false"></xref>,
close parenthesis ) can be fetched via <xref href="gudusoft.gsqlparser.nodes.TParseTreeNode.endToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
</ul>
COLLECTION CONSTRUCTORS (informix)
- Use a collection constructor to specify values for a collection column.
SET|MULTISET|LIST { epxr_list }
- type: collection_constructor_set_t
- type: collection_constructor_multiset_t
- type: collection_constructor_list_t
- expr list: ExprList, may return null when expression list in syntax like this: ()
- left operand: N/A
- right operand: N/A
GROUP EXPRESSION, @deprecated As of v1.4.3.3
<ul>
<li>
</li>
</ul>
COMPARISON
<ul>
<li>A <b>simple comparison condition</b> specifies a comparison with expressions or subquery results.
<br />expr1 EQUAL|NOT_EQUAL|LESS_THAN|GRREAT_THAN|LESS_EQUAL_THAN|GREATE_EQUAL_THAN expr2,
or, (expr_list) EQUAL|NOT_EQUAL (subquery)
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.simple_comparison_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
<li>A <b>group comparison condition</b> specifies a comparison with any or all members
in a list or subquery.
<br />expr EQUAL|NOT_EQUAL|LESS_THAN|GRREAT_THAN|LESS_EQUAL_THAN|GREATE_EQUAL_THAN ANY|SOME|ALL (expr_list|subquery),
or, (expr_list) EQUAL|NOT_EQUAL ANY|SOME|ALL (expr_list|subquery)
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.group_comparison_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
<li> ANY|SOME|ALL: <xref href="gudusoft.gsqlparser.nodes.TExpression.Quantifier" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
</ul>
IN
<ul>
<li>(expr|expr_list) |NOT] IN (expr_list)|(subquery)|expr
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.in_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator is IN: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
<li>NOT keyword: <xref href="gudusoft.gsqlparser.nodes.TExpression.NotToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
</ul>
CASE
<ul>
<li>case expression,let you use IF ... THEN ... ELSE logic in SQL statements without having to invoke procedures.
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.case_t" data-throw-if-not-resolved="false"></xref></li>
<li> case expression: <xref href="gudusoft.gsqlparser.nodes.TExpression.CaseExpression" data-throw-if-not-resolved="false"></xref>}</li>
<li>left operand: N/A</li>
<li>right operand: N/A </li>
<li>operator: N/A </li>
</ul>
</li>
</ul>
CURSOR
<ul>
<li>CURSOR subquery
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.cursor_t" data-throw-if-not-resolved="false"></xref></li>
<li>subquery: <xref href="gudusoft.gsqlparser.nodes.TExpression.SubQuery" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: N/A </li>
<li>operator: CURSOR can be fetched via <xref href="gudusoft.gsqlparser.nodes.TParseTreeNode.startToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
</ul>
PATTERN MATCHING
<ul>
<li>expr1 [NOT] [LIKE|ILIKE|RLIKE|REGEXP|SIMILAR TO] [ALL|ANY|SOME]expr2 [ESCAPE expr3]
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.pattern_matching_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand:<xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>expr3: <xref href="gudusoft.gsqlparser.nodes.TExpression.LikeEscapeOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
<li>NOT keyword: <xref href="gudusoft.gsqlparser.nodes.TExpression.NotToken" data-throw-if-not-resolved="false"></xref></li>
<li>ALL|ANY|SOME keyword: <xref href="gudusoft.gsqlparser.nodes.TExpression.Quantifier" data-throw-if-not-resolved="false"></xref></li>
<li>ESCAPE keyword: N/A</li>
</ul>
</li>
</ul>
NULL
<ul>
<li>expr ISNULL|NOTNULL|IS [NOT] NULL
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.null_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: N/A </li>
<li>operator is NULL: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
<li>NOT keyword: <xref href="gudusoft.gsqlparser.nodes.TExpression.NotToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
</ul>
BETWEEN
<ul>
<li>expr1 [NOT] BETWEEN expr2 AND expr3
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.between_t" data-throw-if-not-resolved="false"></xref></li>
<li>expr1: <xref href="gudusoft.gsqlparser.nodes.TExpression.BetweenOperand" data-throw-if-not-resolved="false"></xref></li>
<li>expr2: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>expr3: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator is BETWEEN: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
<li>NOT keyword: <xref href="gudusoft.gsqlparser.nodes.TExpression.NotToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
</ul>
EXISTS
<ul>
<li>EXISTS (subquery)
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.exists_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: N/A</li>
<li>subquery: <xref href="gudusoft.gsqlparser.nodes.TExpression.SubQuery" data-throw-if-not-resolved="false"></xref> </li>
<li>EXISTS: <xref href="gudusoft.gsqlparser.nodes.TParseTreeNode.startToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
</ul>
IS UNKNOWN
- expr1 IS [NOT] UNKNOWN
- type: is_unknown_t
- left operand: LeftOperand
- right operand: N/A
- operator: OperatorToken
- NOT keyword: NotToken
IS TRUE
- expr1 IS [NOT] TRUE
- type: is_true_t
- left operand: LeftOperand
- right operand: N/A
- operator: OperatorToken
- NOT keyword: NotToken
IS FALSE
- expr1 IS [NOT] FALSE
- type: is_false_t
- left operand: LeftOperand
- right operand: N/A
- operator: OperatorToken
- NOT keyword: NotToken
DAY TO SECOND
<ul>
<li>expr DAY [( integer )] TO SECOND [( integer )]
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.day_to_second_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: N/A </li>
<li>operator: N/A</li>
</ul>
</li>
</ul>
YEAR TO MONTH
<ul>
<li>expr YEAR [( integer )] TO MONTH
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.year_to_month_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: N/A </li>
<li>operator: N/A</li>
</ul>
</li>
</ul>
INTERVAL(teradata)
<ul>
<li>( date_time_expression date_time_term ) start TO end
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.interval_t" data-throw-if-not-resolved="false"></xref></li>
<li>date_time_expression: <xref href="gudusoft.gsqlparser.nodes.TExpression.IntervalExpr" data-throw-if-not-resolved="false"></xref> </li>
<li>left operand: N/A</li>
<li>right operand: N/A </li>
<li>operator: N/A</li>
</ul>
</li>
</ul>
NEW STRUCTURED TYPE
<ul>
<li>NEW function_call
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.new_structured_type_t" data-throw-if-not-resolved="false"></xref></li>
<li>function_call: <xref href="gudusoft.gsqlparser.nodes.TExpression.FunctionCall" data-throw-if-not-resolved="false"></xref> </li>
<li>left operand: N/A</li>
<li>right operand: N/A </li>
<li>operator: N/A</li>
</ul>
</li>
</ul>
NEW VARIANT_TYPE
<ul>
<li>NEW VARIANT_TYPE ( type_argument_list )
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.new_variant_type_t" data-throw-if-not-resolved="false"></xref></li>
<li>type_argument_list: <xref href="gudusoft.gsqlparser.nodes.TExpression.NewVariantTypeArgumentList" data-throw-if-not-resolved="false"></xref> </li>
<li>left operand: N/A</li>
<li>right operand: N/A </li>
<li>operator: N/A</li>
</ul>
</li>
</ul>
LDIFF,RDIFF,P_INTERSECT,P_NORMALIZE
<ul>
<li> expr1 LDIFF|RDIFF|P_INTERSECT|P_NORMALIZE expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.new_variant_type_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
</ul>
UNTIL CHANGED
- expr1 IS [NOT] UNTIL_CHANGED
- type: new_variant_type_t
- left operand: LeftOperand
- right operand: N/A
- operator: OperatorToken
- NOT keyword: NotToken
LEFT SHIFT
<ul>
<li>expr1 >> expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.left_shift_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
</ul>
RIGHT SHIFT
<ul>
<li>expr1 >> expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.right_shift_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
</ul>
IS DOCUMENT
- expr1 IS [NOT] DOCUMENT
- type: is_document_t
- left operand: LeftOperand
- right operand: N/A
- operator: OperatorToken
- NOT keyword: NotToken
IS DISTINCT FROM
<ul>
<li> expr1 IS [NOT] DISTINCT FROM expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.is_distinct_from_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
<li>NOT keyword: <xref href="gudusoft.gsqlparser.nodes.TExpression.NotToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
</ul>
SQL SERVER left join
<ul>
<li> expr1 *= expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.left_join_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
</ul>
SQL SERVER right join
<ul>
<li> expr1 =* expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.right_join_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
</ul>
COLLATE
<ul>
<li> expr1 COLLATE expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.collate_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
<li>NOT keyword: <xref href="gudusoft.gsqlparser.nodes.TExpression.NotToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
</ul>
MEMBER OF
<ul>
<li> expr1 MEMBER OF expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.member_of_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
</ul>
NEXT VALUE FOR
<ul>
<li> NEXT VALUE FOR sequence name, or NEXT integer expression VALUE FOR sequence name
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.next_value_for_t" data-throw-if-not-resolved="false"></xref></li>
<li>sequence name: <xref href="gudusoft.gsqlparser.nodes.TExpression.SequenceName" data-throw-if-not-resolved="false"></xref> </li>
<li>over_clause : <xref href="gudusoft.gsqlparser.nodes.TExpression.Over_clause" data-throw-if-not-resolved="false"></xref>} </li>
<li>left operand(integer expression): <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
</ul>
REF ARROW(named parameters in function call)
<ul>
<li> expr1 => expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.ref_arrow_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
</ul>
TYPECAST
<ul>
<li> expr1 TYPECAST typename
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.typecast_t" data-throw-if-not-resolved="false"></xref></li>
<li>typename: <xref href="gudusoft.gsqlparser.nodes.TExpression.TypeName" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: N/A </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
</ul>
MULTISET
<ul>
<li>MULTISET subquery
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.multiset_t" data-throw-if-not-resolved="false"></xref></li>
<li>subquery: <xref href="gudusoft.gsqlparser.nodes.TExpression.SubQuery" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: N/A </li>
<li>operator: MULTISET can be fetched via <xref href="gudusoft.gsqlparser.nodes.TParseTreeNode.startToken" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
</ul>
FLOATING POINT
<ul>
<li>expr is [NOT] NAN|INFINITE
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.floating_point_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: N/A </li>
<li>operator is IS: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
<li>NOT keyword: <xref href="gudusoft.gsqlparser.nodes.TExpression.NotToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
</ul>
ROW CONSTRUCTOR
<ul>
<li>ROW ( expr_list )
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.row_constructor_t" data-throw-if-not-resolved="false"></xref></li>
<li>expr_list: <xref href="gudusoft.gsqlparser.nodes.TExpression.ExprList" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: N/A </li>
<li>operator is ROW: <xref href="gudusoft.gsqlparser.nodes.TParseTreeNode.startToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
</ul>
IS OF TYPE
<ul>
<li>expr is of type ( datatype,...)
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.is_of_type_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: N/A </li>
<li>operator: N/A</li>
</ul>
</li>
</ul>
PLACE HOLDER
<ul>
<li>place holder expression
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.place_holder_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: N/A </li>
<li>operator: N/A</li>
</ul>
</li>
</ul>
TYPE_CONSTRUCTOR_EXPRESSION
<ul>
<li>[NEW] type_name( expr_list )
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.type_constructor_t" data-throw-if-not-resolved="false"></xref></li>
<li>type_name(expr_list): <xref href="gudusoft.gsqlparser.nodes.TExpression.FunctionCall" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: N/A </li>
<li>operator: N/A</li>
</ul>
</li>
</ul>
ARRAY ACCESS
<ul>
<li>array_name(index1)(index2)(index3)
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.arrayaccess_t" data-throw-if-not-resolved="false"></xref></li>
<li>array_name(index1)(index2)(index3): <xref href="gudusoft.gsqlparser.nodes.TExpression.ArrayAccess" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: N/A </li>
<li>operator: N/A</li>
</ul>
</li>
</ul>
OBJECT ACCESS EXPRESSION
<ul>
<li>objectExpr.[attributes].method()
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.object_access_t" data-throw-if-not-resolved="false"></xref></li>
<li>objectExpr.[attributes].method(): <xref href="gudusoft.gsqlparser.nodes.TExpression.ObjectAccess" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: N/A </li>
<li>operator: N/A</li>
</ul>
</li>
</ul>
Unknown
<ul>
<li>expr OPERATOR expr, means this expression was not recognized by SQL parser yet.
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unknown_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
</ul>
Unknown unary left
<ul>
<li>OPERATOR expr, means this expression was not recognized by SQL parser yet.
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_left_unknown_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: N/A</li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.RightOperand" data-throw-if-not-resolved="false"></xref> </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
</ul>
Unknown unary right
<ul>
<li> expr OPERATOR, means this expression was not recognized by SQL parser yet.
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.unary_right_unknown_t" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: N/A </li>
<li>operator: <xref href="gudusoft.gsqlparser.nodes.TExpression.OperatorToken" data-throw-if-not-resolved="false"></xref></li>
</ul>
</li>
</ul>
ARRAY CONSTRUCTOR
<ul>
<li>
An array constructor is an expression that builds an array value using values for its member elements.
like this: ARRAY[1,2,3+4]
array element values can be accessed via ExprList,
or ExprList can be null when it is: array[]
It is also possible to construct an array from the results of a subquery like this:
SELECT ARRAY(SELECT oid FROM pg_proc WHERE proname LIKE 'bytea%');
thus, subquery can be access via SubQuery
- type: array_constructor_t
- array element values: ExprList
- subquery: SubQuery
- left operand: N/A
- right operand: N/A
- operator: N/A
</p>
</li> </ul>
FIELD SELECTION
<ul>
<li>
If an expression yields a value of a composite type (row type), then a specific field of the row can be extracted by writing
expression.fieldname
In general the row expression must be parenthesized, but the parentheses can be omitted
when the expression to be selected from is just a table reference or positional parameter.
For example:
mytable.mycolumn
$1.somecolumn
(rowfunction(a,b)).col3
(Thus, a qualified column reference is actually just a special case of the field selection syntax.) An important special case is extracting a field from a table column that is of a composite type:
(compositecol).somefield
(mytable.compositecol).somefield
The parentheses are required here to show that compositecol is a column name not a table name,
or that mytable is a table name not a schema name in the second case.
n a select list, you can ask for all fields of a composite value by writing .*:
(compositecol).*
When expression in following syntax, it will be marked as fieldSelection, and check FieldName
(rowfunction(a,b)).col3
(compositecol).somefield
(mytable.compositecol).somefield
(compositecol).*
Otherwise, it will be marked as simpleObjectname:
mytable.mycolumn
$1.somecolumn
- type: fieldselection_t
- left operand: N/A
- right operand: N/A
- operator: N/A
HIVE ARRAY ACCESS
- HIVE field expression syntax like fieldexpr[expr_subscript]
- type: array_access_expr_t
- fieldexpr: LeftOperand
- expr_subscript: RightOperand
- operator: N/A
HIVE FIELD ACCESS
- HIVE field access syntax like fieldexpr.identifier.identifier...
- type: object_access_t
- fieldexpr: LeftOperand
- identifier.identifier...: FieldList
- operator: N/A
JSON Operators (PostgreSQL)
<ul>
<li> expr1 -> expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_get_object" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li> expr1 ->> expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_get_text" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li> expr1 > expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_get_object_at_path" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li> expr1 >> expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_get_text_at_path" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li> expr1 @> expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_left_contain" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li> expr1 >@ expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_right_contain" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li> expr1 ? expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_exist" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li> expr1 ?| expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_any_exist" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
<li> expr1 ?& expr2
<ul>
<li>type: <xref href="gudusoft.gsqlparser.EExpressionType.json_all_exist" data-throw-if-not-resolved="false"></xref></li>
<li>left operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref></li>
<li>right operand: <xref href="gudusoft.gsqlparser.nodes.TExpression.LeftOperand" data-throw-if-not-resolved="false"></xref> </li>
</ul>
</li>
</ul>
public class TExpression : TParseTreeNode, Visitable
- Inheritance
-
TExpression
- Implements
- Inherited Members
Constructors
TExpression()
public TExpression()
TExpression(EExpressionType)
public TExpression(EExpressionType exprType)
Parameters
exprTypeEExpressionType
TExpression(EExpressionType, TConstant)
public TExpression(EExpressionType exprType, TConstant constant)
Parameters
exprTypeEExpressionTypeconstantTConstant
TExpression(EExpressionType, TExpression, TExpression)
public TExpression(EExpressionType exprType, TExpression left, TExpression right)
Parameters
exprTypeEExpressionTypeleftTExpressionrightTExpression
TExpression(EExpressionType, TExpression, TExpression, EComparisonType)
public TExpression(EExpressionType exprType, TExpression left, TExpression right, EComparisonType comparisonType)
Parameters
exprTypeEExpressionTypeleftTExpressionrightTExpressioncomparisonTypeEComparisonType
TExpression(EExpressionType, TFunctionCall)
public TExpression(EExpressionType exprType, TFunctionCall func)
Parameters
exprTypeEExpressionTypefuncTFunctionCall
TExpression(EExpressionType, TObjectName)
public TExpression(EExpressionType exprType, TObjectName dbObject)
Parameters
exprTypeEExpressionTypedbObjectTObjectName
Fields
ASSIGNMENT
Used in set clause of update statement.
Or, assign argument in postgresql function argument like this:
param_name ASSIGN_SIGN basic_expr expr can be accessed via LeftOperand and RightOperand
public const int ASSIGNMENT = 7
Field Value
BITWISE_AND
SQL SERVER, postgresql
expr can be accessed via LeftOperand and RightOperand
public const int BITWISE_AND = 8
Field Value
BITWISE_EXCLUSIVE_OR
SQL SERVER
expr can be accessed via LeftOperand and RightOperand
public const int BITWISE_EXCLUSIVE_OR = 11
Field Value
BITWISE_NOT
public const int BITWISE_NOT = 529
Field Value
BITWISE_OR
SQL SERVER, postgresql
expr can be accessed via LeftOperand and RightOperand
public const int BITWISE_OR = 9
Field Value
BITWISE_SHIFT_LEFT
public const int BITWISE_SHIFT_LEFT = 525
Field Value
BITWISE_SHIFT_RIGHT
public const int BITWISE_SHIFT_RIGHT = 527
Field Value
BITWISE_XOR
MySQL, postgresql
expr can be accessed via LeftOperand and RightOperand
public const int BITWISE_XOR = 10
Field Value
BigAndOrNestLevel
public static int BigAndOrNestLevel
Field Value
COLLATE
sql server, Is a clause that can be applied to a database definition or a column definition to define the collation, or to a character string expression to apply a collation cast.
postgresql
expr can be accessed via LeftOperand and RightOperand
public const int COLLATE = 223
Field Value
CONCATENATE
Links two string operands to form a string expression.
syntax: expr || expr,
expr can be accessed via LeftOperand and RightOperand
public const int CONCATENATE = 5
Field Value
DIVIDE
syntax: expr / expr
expr can be accessed via LeftOperand and RightOperand
public const int DIVIDE = 4
Field Value
EXPONENTIATE
teradata ** , Postgresql ^
expr can be accessed via LeftOperand and RightOperand
public const int EXPONENTIATE = 13
Field Value
LEFTJOIN_OP
sql server, LEFTJOIN_OP *=
expr can be accessed via LeftOperand and RightOperand
public const int LEFTJOIN_OP = 224
Field Value
MINUS
syntax: expr - expr
expr can be accessed via LeftOperand and RightOperand
public const int MINUS = 2
Field Value
MODULO
SQL SERVER,TERADATE(mod)
expr can be accessed via LeftOperand and RightOperand
public const int MODULO = 6
Field Value
PLUS
Addition: expr + expr
expr can be accessed via LeftOperand and RightOperand
public const int PLUS = 1
Field Value
POWER
mdx power operator ^
public const int POWER = 56
Field Value
RANGE
Mdx range operator :
public const int RANGE = 55
Field Value
RIGHTJOIN_OP
sql server, RIGHTJOIN_OP =*
expr can be accessed via LeftOperand and RightOperand
public const int RIGHTJOIN_OP = 225
Field Value
SCOPE_RESOLUTION
SQL SERVER
The scope resolution operator :: provides access to static members of a compound data type, SELECT @hid = hierarchyid::GetRoot();
Not implemented yet,
public const int SCOPE_RESOLUTION = 12
Field Value
TIMES
syntax: expr * expr
expr can be accessed via LeftOperand and RightOperand
public const int TIMES = 3
Field Value
UnknownOperator
This UnknownOperator means this expression was not recognized by SQL parser yet.
In syntax like this:
expr OPERATOR expr
expr can be accessed via LeftOperand and RightOperand
public const int UnknownOperator = 901
Field Value
UnknownUnaryOperator
This UnknownLeftUnaryOperator means this expression was not recognized by SQL parser yet.
In syntax like this:
OPERATOR expr
expr can be accessed via RightOperand
public const int UnknownUnaryOperator = 905
Field Value
UnknownUnaryOperatorRight
This UnknownLeftUnaryOperator means this expression was not recognized by SQL parser yet.
In syntax like this:
expr OPERATOR
expr can be accessed via LeftOperand
public const int UnknownUnaryOperatorRight = 909
Field Value
absoluteValue
public const int absoluteValue = 523
Field Value
arrayConstructor
An array constructor is an expression that builds an array value using values for its member elements.
like this: ARRAY[1,2,3+4]
array element values can be accessed via ExprList,
or ExprList can be null when it is: array[]
It is also possible to construct an array from the results of a subquery like this:
SELECT ARRAY(SELECT oid FROM pg_proc WHERE proname LIKE 'bytea%');
thus, subquery can be access via SubQuery
public const int arrayConstructor = 505
Field Value
at_local
ORACLE,teradata date time expression, at local.
Syntax: expr AT LOCAL.
expr can be accessed via LeftOperand
public const int at_local = 101
Field Value
at_time_zone
ORACLE,teradata date time expression, at time zone.
Syntax: expr1 AT TIME ZONE expr2
expr can be accessed via LeftOperand and RightOperand
public const int at_time_zone = 100
Field Value
between_conditions
A BETWEEN condition determines whether the value of one expression is in an interval defined by two other expressions.
Syntax: expr1 [NOT] BETWEEN expr2 AND expr3
expr1 can be get via gudusoft.gsqlparser.nodes.TExpression._betweenOperand,
expr2 can be get via LeftOperand, and expr3 can be get via RightOperand,
Use OperatorToken to distinguish is between or is not between
public const int between_conditions = 47
Field Value
caseExprOperator
CASE expressions let you use IF ... THEN ... ELSE logic in SQL statements without having to invoke procedures. value can be accessed via CaseExpression which is type of TCaseExpression.
public const int caseExprOperator = 22
Field Value
compoundAssignment
sql server 2008 +=,-=,*=,/=,%=
expr can be accessed via LeftOperand and RightOperand
public const int compoundAssignment = 14
Field Value
compoundParenthesis
expression with parenthesis, expr can be get via LeftOperand which is type of TExpression.
public const int compoundParenthesis = 18
Field Value
compoundPrior
Oracle prior expression, syntax: PRIOR expr value can be accessed via RightOperand which is type of TExpression
public const int compoundPrior = 21
Field Value
compoundUnaryBitwiseNot
sql server
expr can be accessed via RightOperand
public const int compoundUnaryBitwiseNot = 222
Field Value
compoundUnaryMinus
public const int compoundUnaryMinus = 20
Field Value
compoundUnaryPlus
public const int compoundUnaryPlus = 19
Field Value
connect_by_root
oracle unary operator connect_by_root is only valid in hierarchical queries
expr can be accessed via RightOperand
public const int connect_by_root = 229
Field Value
cubeRoot
public const int cubeRoot = 519
Field Value
cursorExprOperator
A CURSOR expression returns a nested cursor.
syntax: CURSOR(subquery ),
subquery can be accessed via SubQuery which is type of TSelectSqlStatement.
public const int cursorExprOperator = 23
Field Value
datetimeExprOperator
datetime expression
N/A
public const int datetimeExprOperator = 25
Field Value
day_to_second
ORACLE date time expression, day to second.
Syntax: expr DAY [( integer )] TO SECOND [( integer )].
expr cam be get via LeftOperand.
The type of this operand is TExpression.
public const int day_to_second = 102
Field Value
dummyOperator
public const int dummyOperator = 37
Field Value
exists_condition
An EXISTS condition tests for existence of rows in a subquery.
Syntax: EXISTS (subquery).
value of subquery can be get via SubQuery
public const int exists_condition = 48
Field Value
expr_list
row descriptor, values can be get via ExprList
public const int expr_list = 35
Field Value
factorial
public const int factorial = 515
Field Value
factorialPrefix
public const int factorialPrefix = 521
Field Value
fieldSelection
If an expression yields a value of a composite type (row type), then a specific field of the row can be extracted by writing
expression.fieldname
In general the row expression must be parenthesized, but the parentheses can be omitted
when the expression to be selected from is just a table reference or positional parameter.
For example:
mytable.mycolumn
$1.somecolumn
(rowfunction(a,b)).col3
(Thus, a qualified column reference is actually just a special case of the field selection syntax.) An important special case is extracting a field from a table column that is of a composite type:
(compositecol).somefield
(mytable.compositecol).somefield
The parentheses are required here to show that compositecol is a column name not a table name,
or that mytable is a table name not a schema name in the second case.
n a select list, you can ask for all fields of a composite value by writing .*:
(compositecol).*
When expression in following syntax, it will be marked as fieldSelection, and check FieldName
(rowfunction(a,b)).col3
(compositecol).somefield
(mytable.compositecol).somefield
(compositecol).*
Otherwise, it will be marked as simpleObjectname:
mytable.mycolumn
$1.somecolumn
public const int fieldSelection = 501
Field Value
floating_point_conditions
The ORACLE floating-point conditions let you determine whether an expression is infinite or is the undefined result of an operation (is not a number or NaN).
Syntax: expr IS|IS NOT (NAM|INFINITE).
Value can be get via LeftOperand
public const int floating_point_conditions = 43
Field Value
funcationCallOperator
funcation expression,
value can be get via FunctionCall
public const int funcationCallOperator = 24
Field Value
group_comparison_conditions
Comparison conditions compare one expression with another. The result of such a comparison can be TRUE, FALSE, or NULL.
A group comparison condition specifies a comparison with any or all members in a list or subquery.
Syntax: expr EQUAL|NOT_EQUAL|LESS_THAN|GRREAT_THAN|LESS_EQUAL_THAN|GREATE_EQUAL_THAN ANY|SOME|ALL (expr_list|subquery), or, (expr_list) EQUAL|NOT_EQUAL ANY|SOME|ALL (expr_list|subquery)
expr can be accessed via LeftOperand and RightOperand
public const int group_comparison_conditions = 41
Field Value
in_conditions
An in_condition is a membership condition. It tests a value for membership in a list of values or subquery.
Syntax: (expr|expr_list) IN|NOT IN (expr_list|subquery).
expr can be accessed via LeftOperand and RightOperand
Use OperatorToken to distinguish in or not in.
public const int in_conditions = 42
Field Value
in_expr
IN expr, values can be get via InExpr
public const int in_expr = 34
Field Value
intervalExprOperator
interval expression
N/A
public const int intervalExprOperator = 26
Field Value
interval_expression
public const int interval_expression = 104
Field Value
is_distinct_from
Postgresql,
expr is [not] distinct from expr
expr can be accessed via LeftOperand and RightOperand
OperatorToken can be used to check whether NOT keyword was used or not.
public const int is_distinct_from = 135
Field Value
is_document
Postgresql, is document condition
expr is [not] document
expr was set in gudusoft.gsqlparser.nodes.TExpression._leftOperand.
OperatorToken can be used to check whether NOT keyword was used or not.
public const int is_document = 133
Field Value
isoftype_condition
expr can be accessed via LeftOperand
public const int isoftype_condition = 49
Field Value
left_shift
public const int left_shift = 301
Field Value
logical_conditions_and
A logical condition combines the results of two component conditions to produce a single result based on them or to invert the result of a single condition.
Syntax: expr AND expr.
expr can be accessed via LeftOperand and RightOperand
public const int logical_conditions_and = 50
Field Value
logical_conditions_is
Mdx is logical condition
public const int logical_conditions_is = 54
Field Value
logical_conditions_not
A logical condition combines the results of two component conditions to produce a single result based on them or to invert the result of a single condition.
Syntax: NOT expr.
value can be get via gudusoft.gsqlparser.nodes.TExpression._rightOperand,
public const int logical_conditions_not = 53
Field Value
logical_conditions_or
A logical condition combines the results of two component conditions to produce a single result based on them or to invert the result of a single condition.
Syntax: expr OR expr.
expr can be accessed via LeftOperand and RightOperand
public const int logical_conditions_or = 51
Field Value
logical_conditions_xor
A logical condition combines the results of two component conditions to produce a single result based on them or to invert the result of a single condition.
Syntax: expr XOR expr.
expr can be accessed via LeftOperand and RightOperand
public const int logical_conditions_xor = 52
Field Value
member_of
ORACLE
expr can be accessed via LeftOperand and RightOperand
public const int member_of = 541
Field Value
modelExprOperator
model expression, not implemented yet
N/A
public const int modelExprOperator = 27
Field Value
multisetExprOperator
public const int multisetExprOperator = 310
Field Value
mysql_binary_operator
MySQL binary operator, select binary 'a' = 'A'
syntax: binary expr
expr can be accessed via RightOperand
public const int mysql_binary_operator = 300
Field Value
new_structured_type
teradata
Constructs a new instance of a structured type and initializes it using the specified constructor method or function.
public const int new_structured_type = 110
Field Value
new_variant_type
teradata Constructs a new instance of a dynamic or VARIANT_TYPE UDT and defines the run time composition of the UDT. object reference NewVariantTypeArgumentList
public const int new_variant_type = 111
Field Value
nextValueOf
Netezza
NEXT VALUE FOR sequence name
NEXT integer expression VALUE FOR sequence name
integer expression can be accessed via LeftOperand if any.
sequence name name can be accessed via RightOperand
public const int nextValueOf = 601
Field Value
null_conditions
A NULL condition tests for nulls. This is the only condition that you should use to test for nulls.
Syntax: expr IS [NOT] null
expr can be accessed via LeftOperand
Use OperatorToken to distinguish is null or is not null
public const int null_conditions = 46
Field Value
objectaccessExprOperator
object access expression, some of those was represented by simpleObjectname expression.
N/A
public const int objectaccessExprOperator = 30
Field Value
pattern_matching_conditions
The pattern-matching conditions compare character data.
The LIKE conditions specify a test involving pattern matching.
Syntax: expr1 LIKE|NOT_LIKE expr1 [ESCAPE expr3],
expr1 can be get via LeftOperand,
expr2 can be get via RightOperand,
expr3 can be get via LikeEscapeOperand,
Use OperatorToken to distinguish is like or is not like
public const int pattern_matching_conditions = 45
Field Value
period_ldiff
teradata period expression: ldiff
expression can be accessed via LeftOperand and RightOperand
public const int period_ldiff = 115
Field Value
period_p_intersect
teradata period expression: p_intersect
expression can be accessed via LeftOperand and RightOperand
public const int period_p_intersect = 119
Field Value
period_p_normalize
teradata period expression: p_normalize
expression can be accessed via LeftOperand and RightOperand
public const int period_p_normalize = 121
Field Value
period_rdiff
teradata period expression: rdiff
expression can be accessed via LeftOperand and RightOperand
public const int period_rdiff = 117
Field Value
placeholderExprOperator
place holder expression
public const int placeholderExprOperator = 32
Field Value
ref_arrow
plsql RAISE_APPLICATION_ERROR (num=> -20107, msg=> 'Duplicate customer or order ID');
expr can be accessed via LeftOperand and RightOperand
public const int ref_arrow = 226
Field Value
right_shift
public const int right_shift = 302
Field Value
rowConstructor
A row constructor is an expression that builds a row value (also called a composite value) using values for its member fields.
like this: ROW(1,2.5,'this is a test')
element values can be accessed via ExprList,
or ExprList can be null when it is: row()
public const int rowConstructor = 509
Field Value
simpleConstant
specifies a constant, value can be get via ConstantOperand
public const int simpleConstant = 16
Field Value
simpleObjectname
specifies a column, pseudocolumn, sequence number, value can be get via ObjectOperand which is type of TObjectName.
public const int simpleObjectname = 15
Field Value
simpleSourcetoken
specifies a null, value can be get via SourcetokenOperand which is type of TSourceToken.
public const int simpleSourcetoken = 17
Field Value
simple_comparison_conditions
Comparison conditions compare one expression with another. The result of such a comparison can be TRUE, FALSE, or NULL.
A simple comparison condition specifies a comparison with expressions or subquery results.
Syntax: expr EQUAL|NOT_EQUAL|LESS_THAN|GRREAT_THAN|LESS_EQUAL_THAN|GREATE_EQUAL_THAN expr, or, (expr_list) EQUAL|NOT_EQUAL (subquery)
expr can be accessed via LeftOperand and RightOperand
public const int simple_comparison_conditions = 40
Field Value
sqlserver_proprietary_column_alias
SQL SERVER Proprietary syntax, set alias of a column in select list, column expr in rightOperand.
expr can be accessed via LeftOperand and RightOperand
public const int sqlserver_proprietary_column_alias = 230
Field Value
squareRoot
public const int squareRoot = 517
Field Value
subqueryExprOperator
A scalar subquery expression is a subquery that returns exactly one column value
from one row.
value can be get via SubQuery which is type of TSelectSqlStatement.
public const int subqueryExprOperator = 28
Field Value
true_false_unknown
Postgresql
true, false, unknown condition
expr is [not] true
expr is [not] false
expr is [not] unknown
expr can be accessed via LeftOperand
OperatorToken can be used to check whether NOT keyword was used or not.
public const int true_false_unknown = 137
Field Value
typecast
plsql
expr can be accessed via LeftOperand
public const int typecast = 227
Field Value
typeconstructorExprOperator
type constructor expression,
not implemented yet
public const int typeconstructorExprOperator = 29
Field Value
unknown
public const int unknown = 0
Field Value
until_changed
teradata until changed condition
syntax: END(period_value_expression) IS[NOT] UNTIL_CHANGED
ending bound of a Period value expression can be accessed via LeftOperand
public const int until_changed = 123
Field Value
year_to_month
ORACLE date time expression, year to month.
Syntax: expr YEAR [( integer )] TO MONTH.
expr can be accessed via LeftOperand
public const int year_to_month = 103
Field Value
Properties
ArrayAccess
public virtual TArrayAccess ArrayAccess { get; set; }
Property Value
BetweenOperand
public virtual TExpression BetweenOperand { get; set; }
Property Value
CaseExpression
public virtual TCaseExpression CaseExpression { get; set; }
Property Value
ComparisonOperator
public virtual TSourceToken ComparisonOperator { get; set; }
Property Value
- TSourceToken
operator used in comparison condition.
ComparisonType
public virtual EComparisonType ComparisonType { get; set; }
Property Value
ConstantOperand
public virtual TConstant ConstantOperand { get; set; }
Property Value
DataTypeConversion
public virtual TExplicitDataTypeConversion DataTypeConversion { get; set; }
Property Value
DataTypeConversionList
public virtual List<TExplicitDataTypeConversion> DataTypeConversionList { get; set; }
Property Value
DatetimeExpression
public virtual TDatetimeExpression DatetimeExpression { get; set; }
Property Value
ExprAlias
In Teradata/DB2, it is possible there is an alias for expression
public virtual TAliasClause ExprAlias { get; set; }
Property Value
- TAliasClause
expression alias
ExprList
public virtual TExpressionList ExprList { get; set; }
Property Value
ExpressionType
change return type from int to EExpressionType since 1.4.3.0
public virtual EExpressionType ExpressionType { get; set; }
Property Value
- EExpressionType
a value of EExpressionType
FieldList
public virtual TObjectNameList FieldList { get; set; }
Property Value
FieldName
valid when ExpressionType is fieldselection_t
public virtual TObjectName FieldName { get; set; }
Property Value
- TObjectName
field name
FunctionCall
public virtual TFunctionCall FunctionCall { get; set; }
Property Value
Hive_variable
public virtual THiveVariable Hive_variable { get; set; }
Property Value
InExpr
public virtual TInExpr InExpr { get; set; }
Property Value
Indirection
public virtual TIndirection Indirection { get; set; }
Property Value
IntervalExpr
public virtual TIntervalExpression IntervalExpr { get; set; }
Property Value
IntervalExpression
public virtual TIntervalExpression IntervalExpression { get; set; }
Property Value
Leaf
expression type such as column reference is a leaf expression while subtract expression is not a leaf expression. Usually, non-leaf expression should including both LeftOperand and RightOperand.
public virtual bool Leaf { get; }
Property Value
- bool
leaf expression or not.
LeftOperand
public virtual TExpression LeftOperand { get; set; }
Property Value
LikeEscapeOperand
public virtual TExpression LikeEscapeOperand { get; set; }
Property Value
NewVariantTypeArgumentList
public virtual TNewVariantTypeArgumentList NewVariantTypeArgumentList { get; set; }
Property Value
NotModifier
return true for expression like this:
expr NOT IS NULL, expr NOT LIKE expr , expr NOT BETWEEN expr AND expr
and return false for expression like this:
expr IS NULL, expr LIKE expr , expr BETWEEN expr AND expr
@return
[Obsolete("Property is deprecated, , please use NotToken instead")]
public virtual bool NotModifier { get; }
Property Value
NotOperator
public virtual bool NotOperator { get; set; }
Property Value
NotToken
public virtual TSourceToken NotToken { get; set; }
Property Value
ObjectAccess
public virtual TObjectAccess ObjectAccess { get; set; }
Property Value
ObjectOperand
public virtual TObjectName ObjectOperand { get; set; }
Property Value
OperatorToken
public virtual TSourceToken OperatorToken { get; set; }
Property Value
OracleOuterJoin
public virtual bool OracleOuterJoin { get; set; }
Property Value
OutputFormatPhraseList
public virtual TOutputFormatPhraseList OutputFormatPhraseList { get; set; }
Property Value
Over_clause
public virtual TAnalyticFunction Over_clause { get; set; }
Property Value
OwnerStmt
public virtual TCustomSqlStatement OwnerStmt { get; set; }
Property Value
ParentExpr
public virtual TExpression ParentExpr { get; set; }
Property Value
Quantifier
one of the following quantifier keywords: SOME, ANY, ALL
public virtual TSourceToken Quantifier { get; set; }
Property Value
- TSourceToken
SOME, ANY, ALL in group comparison condition.
QuantifierType
public virtual EQuantifierType QuantifierType { get; set; }
Property Value
RightOperand
public virtual TExpression RightOperand { get; set; }
Property Value
SequenceName
public virtual TObjectName SequenceName { get; set; }
Property Value
SourcetokenOperand
public virtual TSourceToken SourcetokenOperand { get; set; }
Property Value
SubQuery
public virtual TSelectSqlStatement SubQuery { get; set; }
Property Value
SubQueryInStmt
public virtual bool SubQueryInStmt { get; set; }
Property Value
SubQueryNode
public virtual TSelectSqlNode SubQueryNode { set; }
Property Value
Subscripts
If an expression yields a value of an array type, then a specific element of the array value can be extracted by writing
expression[subscript]
or multiple adjacent elements (an "array slice") can be extracted by writing
expression[lower_subscript:upper_subscript]
In general the array expression must be parenthesized, but the parentheses can be omitted when the expression to be subscripted is just a column reference or positional parameter.
Also, multiple subscripts can be concatenated when the original array is multidimensional. For example:
when sytnax like this:
mytable.arraycolumn[4]
mytable.two_d_column[17][34]
$1[10:42]
check ObjectOperand for more detailed information about subscript.
when syntax like this:
(arrayfunction(a,b))[42]
check Indirection when Subscripts is true.
public virtual bool Subscripts { get; set; }
Property Value
- bool
tells whether it is an expression with subscript.
Symmetric
public virtual bool Symmetric { get; set; }
Property Value
TypeName
public virtual TTypeName TypeName { get; set; }
Property Value
Val
public virtual object Val { get; set; }
Property Value
VisitSubTree
public virtual bool VisitSubTree { get; set; }
Property Value
WindowSpecification
public virtual TWindowDef WindowSpecification { set; }
Property Value
Methods
accept(TParseTreeVisitor)
public override void accept(TParseTreeVisitor v)
Parameters
acceptChildren(TParseTreeVisitor)
public override void acceptChildren(TParseTreeVisitor v)
Parameters
addANDCondition(string)
if original expr is f > 1, and call addANDCondition("f2 > 2") expression will be: f > 1 and f2 > 2
public virtual void addANDCondition(string condition)
Parameters
conditionstring
addORCondition(string)
if original expr is f > 1, and call addORCondition("f2 > 2") expression will be: f > 1 or f2 > 2
public virtual void addORCondition(string condition)
Parameters
conditionstring
copyTo(TExpression)
public void copyTo(TExpression target)
Parameters
targetTExpression
doParse(TCustomSqlStatement, ESqlClause)
analyze this node
public override void doParse(TCustomSqlStatement psql, ESqlClause plocation)
Parameters
psqlTCustomSqlStatementplocationESqlClause
getAndOrTokenBeforeExpr()
public TSourceToken getAndOrTokenBeforeExpr()
Returns
getComparisonType(TSourceToken)
public static EComparisonType getComparisonType(TSourceToken comparisonOperator)
Parameters
comparisonOperatorTSourceToken
Returns
getFlattedAndOrExprs()
public ArrayList getFlattedAndOrExprs()
Returns
inOrderTraverse(IExpressionVisitor)
Traverse expression in In Order.
public virtual void inOrderTraverse(IExpressionVisitor ev)
Parameters
evIExpressionVisitoruser defined visitor
init(object)
Initialize a query tree node.
public override void init(object arg1)
Parameters
arg1object
init(object, object)
public override void init(object arg1, object arg2)
Parameters
init(object, object, object)
public override void init(object arg1, object arg2, object arg3)
Parameters
init(object, object, object, object)
initialize a new instance of TExpression.
public override void init(object arg1, object arg2, object arg3, object arg4)
Parameters
arg1objecttype of this expression, a value of type EExpressionType
arg2objectoperator, a value of TSourceToken
arg3objectleft operand, a value of TExpression the meaning of this parameter varies depends on the value of arg1.
arg4objectright operand, a value of TExpression
isLeafExpr(TParseTreeNode)
public virtual bool isLeafExpr(TParseTreeNode pnode)
Parameters
pnodeTParseTreeNode
Returns
mergeObjectNameList(TExpression, TObjectNameList)
public static TExpression mergeObjectNameList(TExpression expr, TObjectNameList objectNameList)
Parameters
exprTExpressionobjectNameListTObjectNameList
Returns
postOrderTraverse(IExpressionVisitor)
Traverse expression in post order.
public virtual void postOrderTraverse(IExpressionVisitor ev)
Parameters
evIExpressionVisitoruser defined visitor
preOrderTraverse(IExpressionVisitor)
Traverse expression in pre Order.
public virtual void preOrderTraverse(IExpressionVisitor ev)
Parameters
evIExpressionVisitoruser defined visitor
remove()
public void remove()
searchColumn(string)
public TExpressionList searchColumn(string columnName)
Parameters
columnNamestring
Returns
setBetweenOperand(TExpression)
public void setBetweenOperand(TExpression e)
Parameters
setCaseExpression(TCaseExpression)
public void setCaseExpression(TCaseExpression ce)
Parameters
setExprList(TExpressionList)
public void setExprList(TExpressionList el)
Parameters
setFunctionCall(TFunctionCall)
public void setFunctionCall(TFunctionCall c)
Parameters
setIndirection(TIndirection)
public void setIndirection(TIndirection i)
Parameters
setLeftOperand(TExpression)
public void setLeftOperand(TExpression e)
Parameters
setLikeEscapeOperand(TExpression)
public void setLikeEscapeOperand(TExpression e)
Parameters
setNotToken(TSourceToken)
public void setNotToken(TSourceToken st)
Parameters
stTSourceToken
setOperatorToken(TSourceToken)
public void setOperatorToken(TSourceToken st)
Parameters
stTSourceToken
setQuantifier(TSourceToken)
public void setQuantifier(TSourceToken st)
Parameters
stTSourceToken
setRightOperand(TExpression)
public void setRightOperand(TExpression e)
Parameters
setSubQueryNode(TSelectSqlNode)
public void setSubQueryNode(TSelectSqlNode subquery)
Parameters
subqueryTSelectSqlNode
setSymmetric(bool)
public void setSymmetric(bool b)
Parameters
bbool
setTokenToIdentifier()
public virtual void setTokenToIdentifier()
setTypeName(TTypeName)
public void setTypeName(TTypeName n)