Merge pull request #8740 from godfreyd/en-docs/CLICKHOUSEDOCS-458

Docs: char function
This commit is contained in:
alexey-milovidov 2020-02-02 05:58:08 +03:00 committed by GitHub
commit 76d85b6c50
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 124 additions and 2 deletions

View File

@ -1,7 +1,64 @@
# Encoding functions
## char
Accepts multiple arguments of numberic types. Returns a string with the length as the number of passed arguments and each byte has the value of corresponding argument.
## char {#char}
Returns the string with the length as the number of passed arguments and each byte has the value of corresponding argument. Accepts multiple arguments of numeric types. If the value of argument is out of range of UInt8 data type, it is converted to UInt8 with possible rounding and overflow.
**Syntax**
```sql
char(number_1, [number_2, ..., number_n]);
```
**Parameters**
- `number_1, number_2, ..., number_n` — Numerical arguments interpreted as integers. Types: [Int](../../data_types/int_uint.md), [Float](../../data_types/float.md).
**Returned value**
- a string of given bytes.
Type: `String`.
**Example**
Query:
```sql
SELECT char(104.1, 101, 108.9, 108.9, 111) AS hello
```
Result:
```text
┌─hello─┐
│ hello │
└───────┘
```
You can construct a string of arbitrary encoding by passing the corresponding bytes. Here is example for UTF-8:
Query:
```sql
SELECT char(0xD0, 0xBF, 0xD1, 0x80, 0xD0, 0xB8, 0xD0, 0xB2, 0xD0, 0xB5, 0xD1, 0x82) AS hello;
```
Result:
```text
┌─hello──┐
│ привет │
└────────┘
```
Query:
```sql
SELECT char(0xE4, 0xBD, 0xA0, 0xE5, 0xA5, 0xBD) AS hello;
```
Result:
```text
┌─hello─┐
│ 你好 │
└───────┘
```
## hex

View File

@ -1,5 +1,70 @@
# Функции кодирования
## char {#char}
Возвращает строку, длина которой равна числу переданных аргументов, и каждый байт имеет значение соответствующего аргумента. Принимает несколько числовых аргументов. Если значение аргумента выходит за диапазон UInt8 (0..255), то оно преобразуется в UInt8 с возможным округлением и переполнением.
**Синтаксис**
```sql
char(number_1, [number_2, ..., number_n]);
```
**Параметры**
- `number_1, number_2, ..., number_n` — Числовые аргументы, которые интерпретируются как целые числа. Типы: [Int](../../data_types/int_uint.md), [Float](../../data_types/float.md).
**Возвращаемое значение**
- строка из соответствующих байт.
Тип: `String`.
**Пример**
Запрос:
```sql
SELECT char(104.1, 101, 108.9, 108.9, 111) AS hello
```
Ответ:
```text
┌─hello─┐
│ hello │
└───────┘
```
Вы можете создать строку в произвольной кодировке, передав соответствующие байты. Пример для UTF-8:
Запрос:
```sql
SELECT char(0xD0, 0xBF, 0xD1, 0x80, 0xD0, 0xB8, 0xD0, 0xB2, 0xD0, 0xB5, 0xD1, 0x82) AS hello;
```
Ответ:
```text
┌─hello──┐
│ привет │
└────────┘
```
Запрос:
```sql
SELECT char(0xE4, 0xBD, 0xA0, 0xE5, 0xA5, 0xBD) AS hello;
```
Ответ:
```text
┌─hello─┐
│ 你好 │
└───────┘
```
## hex
Принимает аргументы типов: `String`, `unsigned integer`, `float`, `decimal`, `Date`, or `DateTime`. Возвращает строку, содержащую шестнадцатеричное представление аргумента. Используются заглавные буквы `A-F`. Не используются префиксы `0x` и суффиксы `h`. Для строк просто все байты кодируются в виде двух шестнадцатеричных цифр. Числа выводятся в big endian ("человеческом") формате. Для чисел вырезаются старшие нули, но только по целым байтам. Например, `hex(1) = '01'`. `Date` кодируется как число дней с начала unix-эпохи. `DateTime` кодируются как число секунд с начала unix-эпохи. `float` и `decimal` кодируются как их шестнадцатеричное представление в памяти.