本节列出了表达式必须遵循的语法规则。
以下语法规则定义了 OceanBase 数据库的表达式语法:
expr:
expr AND expr
| expr && expr
| expr OR expr
| expr || expr
| expr XOR expr
| NOT expr
| bool_pri IS BOOL_VALUE
| bool_pri IS not BOOL_VALUE
| bool_pri IS UNKNOWN
| bool_pri IS not UNKNOWN
| bool_pri := expr
;
bool_pri:
bool_pri IS NULL
| bool_pri IS not NULL
| bool_pri COMP_LE predicate
| bool_pri COMP_LE sub_query_flag '(' select_no_parens ')'
| bool_pri COMP_LT predicate
| bool_pri COMP_LT sub_query_flag '(' select_no_parens ')'
| bool_pri COMP_EQ predicate
| bool_pri COMP_EQ sub_query_flag '(' select_no_parens ')'
| bool_pri COMP_NSEQ predicate
| bool_pri COMP_GE predicate
| bool_pri COMP_GE sub_query_flag '(' select_no_parens ')'
| bool_pri COMP_GT predicate
| bool_pri COMP_GT sub_query_flag '(' select_no_parens ')
| bool_pri COMP_NE predicate
| bool_pri COMP_NE sub_query_flag '(' select_no_parens ')'
| predicate
;
comparison_operator:
COMP_LE ==> '<='
COMP_LT ==> '<'
COMP_EQ ==> '='
COMP_NSEQ ==> '<=>'
COMP_GE ==> '>='
COMP_GT ==> '>'
COMP_NE ==> '!='
predicate:
bit_expr IN in_expr
| bit_expr not IN in_expr
| bit_expr not BETWEEN bit_expr AND predicate
| bit_expr BETWEEN bit_expr AND predicate
| bit_expr LIKE simple_expr
| bit_expr LIKE simple_expr ESCAPE simple_expr
| bit_expr not LIKE simple_expr
| bit_expr not LIKE simple_expr ESCAPE simple_expr
| bit_expr REGEXP bit_expr
| bit_expr not REGEXP bit_expr
| bit_expr
;
bit_expr:
bit_expr '|' bit_expr
| bit_expr '&' bit_expr
| bit_expr << bit_expr
| bit_expr >> bit_expr
| bit_expr '+' bit_expr
| bit_expr '-' bit_expr
| bit_expr '+' INTERVAL expr date_unit
| bit_expr '-' INTERVAL expr date_unit
| bit_expr '*' bit_expr
| bit_expr '/' bit_expr
| bit_expr '%' bit_expr
| bit_expr MOD bit_expr
| bit_expr DIV bit_expr
| bit_expr '^' bit_expr
| simple_expr
;
simple_expr:
simple_expr collation
| BINARY simple_expr
| column_ref
| expr_const
| simple_expr CNNOP simple_expr
| '+' simple_expr
| '-' simple_expr
| '~' simple_expr
| '!' simple_expr
| not simple_expr
| select_with_parens
| '(' expr ')'
| '(' expr_list ',' expr ')'
| ROW '(' expr_list ',' expr ')'
| EXISTS select_with_parens
| MATCH '(' column_list ')' AGAINST '(' STRING_VALUE opt_mode_flag ')'
| case_expr
| func_expr
| window_function
| USER_VARIABLE
;
有关运算符优先级,请参见 运算符优先级。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




