mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-10 09:32:06 +00:00
revert query_language/syntax.md
This commit is contained in:
parent
8796fa43be
commit
cdbae550b1
@ -35,32 +35,34 @@ Keywords (such as `SELECT`) are not case-sensitive. Everything else (column name
|
||||
Identifiers (column names, functions, and data types) can be quoted or non-quoted.
|
||||
Non-quoted identifiers start with a Latin letter or underscore, and continue with a Latin letter, underscore, or number. In other words, they must match the regex `^[a-zA-Z_][0-9a-zA-Z_]*$`. Examples: `x, _1, X_y__Z123_.`
|
||||
|
||||
Quoted identifiers are placed in reversed quotation marks ` `id` ` (the same as in MySQL), and can indicate any set of bytes (non-empty). In addition, symbols (for example, the reverse quotation mark) inside this type of identifier can be backslash-escaped. Escaping rules are the same as for string literals (see below).
|
||||
Quoted identifiers are placed in reversed quotation marks `` `id` `` (the same as in MySQL), and can indicate any set of bytes (non-empty). In addition, symbols (for example, the reverse quotation mark) inside this type of identifier can be backslash-escaped. Escaping rules are the same as for string literals (see below).
|
||||
We recommend using identifiers that do not need to be quoted.
|
||||
|
||||
## Literals
|
||||
|
||||
### Numeric
|
||||
There are numeric literals, string literals, and compound literals.
|
||||
|
||||
### Numeric Literals
|
||||
|
||||
A numeric literal tries to be parsed:
|
||||
|
||||
- First as a 64-bit signed number, using the `strtoull` function.
|
||||
- If unsuccessful, as a 64-bit unsigned number, using the `strtoll` function.
|
||||
- If unsuccessful, as a floating-point number using the `strtod` function.
|
||||
- First as a 64-bit signed number, using the 'strtoull' function.
|
||||
- If unsuccessful, as a 64-bit unsigned number, using the 'strtoll' function.
|
||||
- If unsuccessful, as a floating-point number using the 'strtod' function.
|
||||
- Otherwise, an error is returned.
|
||||
|
||||
The corresponding value will have the smallest type that the value fits in.
|
||||
For example, 1 is parsed as `UInt8`, and 256 is parsed as `UInt16`. For more information, see the section [Data types](../data_types/index.md#data_types).
|
||||
For example, 1 is parsed as UInt8, but 256 is parsed as UInt16. For more information, see "Data types".
|
||||
|
||||
Examples: `1`, `18446744073709551615`, `0xDEADBEEF`, `01`, `0.1`, `1e100`, `-1e-100`, `inf`, `nan`.
|
||||
|
||||
### String
|
||||
### String Literals
|
||||
|
||||
Only string literals in single quotes are supported. The enclosed characters can be backslash-escaped. The following escape sequences have a corresponding special value: `\b`, `\f`, `\r`, `\n`, `\t`, `\0`, `\a`, `\v`, `\xHH`. In all other cases, escape sequences in the format `\c`, where "c" is any character, are converted to "c". This means that you can use the sequences `\'`and`\\`. The value will be of type [String](../data_types/string.md#data_types-string).
|
||||
Only string literals in single quotes are supported. The enclosed characters can be backslash-escaped. The following escape sequences have a corresponding special value: `\b`, `\f`, `\r`, `\n`, `\t`, `\0`, `\a`, `\v`, `\xHH`. In all other cases, escape sequences in the format `\c`, where "c" is any character, are converted to "c". This means that you can use the sequences `\'`and`\\`. The value will have the String type.
|
||||
|
||||
The minimum set of characters that you need to escape in string literals: `'` and `\`.
|
||||
|
||||
### Compound
|
||||
### Compound Literals
|
||||
|
||||
Constructions are supported for arrays: `[1, 2, 3]` and tuples: `(1, 'Hello, world!', 2)`..
|
||||
Actually, these are not literals, but expressions with the array creation operator and the tuple creation operator, respectively.
|
||||
@ -68,20 +70,6 @@ For more information, see the section "Operators2".
|
||||
An array must consist of at least one item, and a tuple must have at least two items.
|
||||
Tuples have a special purpose for use in the IN clause of a SELECT query. Tuples can be obtained as the result of a query, but they can't be saved to a database (with the exception of Memory-type tables).
|
||||
|
||||
<a name="null-literal"></a>
|
||||
|
||||
### NULL
|
||||
|
||||
Indicates that the value is missing.
|
||||
|
||||
In order to store `NULL` in a table field, it must be of the [Nullable](../data_types/nullable.md#data_type-nullable) type.
|
||||
|
||||
Depending on the data format (input or output), `NULL` may have a different representation. For more information, see the documentation for [data formats](../interfaces/formats.md#formats).
|
||||
|
||||
There are many nuances to processing `NULL`. For example, if at least one of the arguments of a comparison operation is `NULL`, the result of this operation will also be `NULL`. The same is true for multiplication, addition, and other operations. For more information, read the documentation for each operation.
|
||||
|
||||
In queries, you can check `NULL` using the [IS NULL](operators.md#operator-is-null) and [IS NOT NULL](operators.md#operator-is-not-null) operators and the related functions `isNull` and `isNotNull`.
|
||||
|
||||
## Functions
|
||||
|
||||
Functions are written like an identifier with a list of arguments (possibly empty) in brackets. In contrast to standard SQL, the brackets are required, even for an empty arguments list. Example: `now()`.
|
||||
@ -116,3 +104,4 @@ In a `SELECT` query, an asterisk can replace the expression. For more informatio
|
||||
An expression is a function, identifier, literal, application of an operator, expression in brackets, subquery, or asterisk. It can also contain a synonym.
|
||||
A list of expressions is one or more expressions separated by commas.
|
||||
Functions and operators, in turn, can have expressions as arguments.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user