Spec-Zone .ru
спецификации, руководства, описания, API
|
The following rules define expression syntax in MySQL. The grammar shown here is based on that given in the
sql/sql_yacc.yy
file of MySQL source distributions. See the notes after the
grammar for additional information about some of the terms. Operator precedence is given in Section
12.3.1, "Operator Precedence".
expr
:expr
ORexpr
|expr
||expr
|expr
XORexpr
|expr
ANDexpr
|expr
&&expr
| NOTexpr
| !expr
|boolean_primary
IS [NOT] {TRUE | FALSE | UNKNOWN} |boolean_primary
boolean_primary
:boolean_primary
IS [NOT] NULL |boolean_primary
<=>predicate
|boolean_primary
comparison_operator
predicate
|boolean_primary
comparison_operator
{ALL | ANY} (subquery
) |predicate
comparison_operator
: = | >= | > | <= | < | <> | !=predicate
:bit_expr
[NOT] IN (subquery
) |bit_expr
[NOT] IN (expr
[,expr
] ...) |bit_expr
[NOT] BETWEENbit_expr
ANDpredicate
|bit_expr
SOUNDS LIKEbit_expr
|bit_expr
[NOT] LIKEsimple_expr
[ESCAPEsimple_expr
] |bit_expr
[NOT] REGEXPbit_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
*bit_expr
|bit_expr
/bit_expr
|bit_expr
DIVbit_expr
|bit_expr
MODbit_expr
|bit_expr
%bit_expr
|bit_expr
^bit_expr
|bit_expr
+interval_expr
|bit_expr
-interval_expr
|simple_expr
simple_expr
:literal
|identifier
|function_call
|simple_expr
COLLATEcollation_name
|param_marker
|variable
|simple_expr
||simple_expr
| +simple_expr
| -simple_expr
| ~simple_expr
| !simple_expr
| BINARYsimple_expr
| (expr
[,expr
] ...) | ROW (expr
,expr
[,expr
] ...) | (subquery
) | EXISTS (subquery
) | {identifier
expr
} |match_expr
|case_expr
|interval_expr
Notes:
For literal value syntax, see Section 9.1, "Literal Values".
For identifier syntax, see Section 9.2, "Schema Object Names".
Variables can be user variables, system variables, or stored program local variables or parameters:
User variables: Section 9.4, "User-Defined Variables"
System variables: Section 5.1.5, "Using System Variables"
Local variables: Section
13.6.4.1, "Local Variable DECLARE
Syntax"
Parameters: Section
13.1.15, "CREATE PROCEDURE
and CREATE FUNCTION
Syntax"
param_marker
is '?'
as used in prepared
statements for placeholders. See Section
13.5.1, "PREPARE
Syntax".
(
indicates a subquery that
returns a single value; that is, a scalar subquery. See Section
13.2.10.1, "The Subquery as Scalar Operand". subquery
)
{
is ODBC escape syntax and is accepted for ODBC
compatibility. The value is identifier
expr
}expr
. The curly braces in the syntax
should be written literally; they are not metasyntax as used elsewhere in syntax descriptions.
match_expr
indicates a MATCH
expression. See Section 12.9,
"Full-Text Search Functions".
case_expr
indicates a CASE
expression. See Section 12.4,
"Control Flow Functions".
interval_expr
represents a time interval. The syntax is INTERVAL
, where expr
unit
unit
is a
specifier such as HOUR
, DAY
, or WEEK
.
For the full list of unit
specifiers, see the description of the DATE_ADD()
function in Section
12.7, "Date and Time Functions".
The meaning of some operators depends on the SQL mode:
By default, ||
is a logical OR
operator. With PIPES_AS_CONCAT
enabled, ||
is string concatenation, with a precedence between ^
and the unary operators.
By default, !
has a higher precedence than NOT
. With HIGH_NOT_PRECEDENCE
enabled, !
and NOT
have the same precedence.