From b17425b9976bcffe1c54bf889e341a589e17f416 Mon Sep 17 00:00:00 2001 From: asiana21 Date: Tue, 17 Dec 2019 21:57:08 +0300 Subject: [PATCH 1/5] docs(char):returns a string of the characters given by the code values of corresponding argument --- .../functions/encoding_functions.md | 59 ++++++++++++++++++- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/docs/en/query_language/functions/encoding_functions.md b/docs/en/query_language/functions/encoding_functions.md index 7cf93071b93..d1be55639e2 100644 --- a/docs/en/query_language/functions/encoding_functions.md +++ b/docs/en/query_language/functions/encoding_functions.md @@ -1,7 +1,62 @@ # 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} + +Accepts multiple arguments of numeric types. Returns a string with the length as the number of passed arguments and each byte has the value of corresponding argument. + +**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** + +- UTF-8 string consisting of the characters given by the code values of corresponding argument. + +Type: `String`. + +**Example** + +Query: +```sql +SELECT char(104.1, 101, 108.9, 108.9, 111) AS hello +``` + +Result: +```text +┌─hello─┐ +│ hello │ +└───────┘ +``` + +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 From e45f03215f77d57ef2b5e2de882bf7effc09e817 Mon Sep 17 00:00:00 2001 From: Sergei Bocharov Date: Mon, 20 Jan 2020 13:27:51 +0300 Subject: [PATCH 2/5] Fixes --- .../functions/encoding_functions.md | 2 +- .../functions/encoding_functions.md | 63 +++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/docs/en/query_language/functions/encoding_functions.md b/docs/en/query_language/functions/encoding_functions.md index d1be55639e2..77e4f030d03 100644 --- a/docs/en/query_language/functions/encoding_functions.md +++ b/docs/en/query_language/functions/encoding_functions.md @@ -2,7 +2,7 @@ ## char {#char} -Accepts multiple arguments of numeric types. Returns a string with the length as the number of passed arguments and each byte has the value of corresponding argument. +Returns the character value of the given integer value according to the ASCII table. Accepts multiple arguments of numeric types. **Syntax** diff --git a/docs/ru/query_language/functions/encoding_functions.md b/docs/ru/query_language/functions/encoding_functions.md index 9c7737e5d14..943fb997205 100644 --- a/docs/ru/query_language/functions/encoding_functions.md +++ b/docs/ru/query_language/functions/encoding_functions.md @@ -1,5 +1,68 @@ # Функции кодирования +## char {#char} + +Возвращает символьное значение данного целого значения в соответствии с таблицей ASCII. Принимает несколько числовых аргументов. + +**Синтаксис** + +```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). + +**Возвращаемое значение** + +- Строка UTF-8 содержащая символы, полученные путем преобразования числовых аргументов. + +Тип: `String`. + +**Пример** + +Запрос: + +```sql +SELECT char(104.1, 101, 108.9, 108.9, 111) AS hello +``` + +Ответ: + +```text +┌─hello─┐ +│ hello │ +└───────┘ +``` + +Запрос: +```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` кодируются как их шестнадцатеричное представление в памяти. From 2a994eede16ad07d19d1edf5c268a986d98ea175 Mon Sep 17 00:00:00 2001 From: Sergei Bocharov Date: Fri, 24 Jan 2020 11:07:21 +0300 Subject: [PATCH 3/5] Fixes after review --- docs/en/query_language/functions/encoding_functions.md | 2 +- docs/ru/query_language/functions/encoding_functions.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/query_language/functions/encoding_functions.md b/docs/en/query_language/functions/encoding_functions.md index 77e4f030d03..e78eb201e3f 100644 --- a/docs/en/query_language/functions/encoding_functions.md +++ b/docs/en/query_language/functions/encoding_functions.md @@ -2,7 +2,7 @@ ## char {#char} -Returns the character value of the given integer value according to the ASCII table. Accepts multiple arguments of numeric types. +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. **Syntax** diff --git a/docs/ru/query_language/functions/encoding_functions.md b/docs/ru/query_language/functions/encoding_functions.md index 943fb997205..68cdb4fd566 100644 --- a/docs/ru/query_language/functions/encoding_functions.md +++ b/docs/ru/query_language/functions/encoding_functions.md @@ -2,7 +2,7 @@ ## char {#char} -Возвращает символьное значение данного целого значения в соответствии с таблицей ASCII. Принимает несколько числовых аргументов. +Возвращает строку, длина которой равна числу переданных аргументов, и каждый байт имеет значение соответствующего аргумента. Принимает несколько числовых аргументов. **Синтаксис** From 0c103c07c94adfddbec2a592fb2e0e6a64cd4fbc Mon Sep 17 00:00:00 2001 From: alexey-milovidov Date: Sun, 2 Feb 2020 05:55:57 +0300 Subject: [PATCH 4/5] Update encoding_functions.md --- docs/en/query_language/functions/encoding_functions.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/en/query_language/functions/encoding_functions.md b/docs/en/query_language/functions/encoding_functions.md index e78eb201e3f..bfef05da93b 100644 --- a/docs/en/query_language/functions/encoding_functions.md +++ b/docs/en/query_language/functions/encoding_functions.md @@ -2,7 +2,7 @@ ## 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. +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** @@ -16,7 +16,7 @@ char(number_1, [number_2, ..., number_n]); **Returned value** -- UTF-8 string consisting of the characters given by the code values of corresponding argument. +- a string of given bytes. Type: `String`. @@ -34,6 +34,8 @@ Result: └───────┘ ``` +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; From eb75be413b7d3889b2606cbb0c3c263d983af9de Mon Sep 17 00:00:00 2001 From: alexey-milovidov Date: Sun, 2 Feb 2020 05:57:39 +0300 Subject: [PATCH 5/5] Update encoding_functions.md --- docs/ru/query_language/functions/encoding_functions.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/ru/query_language/functions/encoding_functions.md b/docs/ru/query_language/functions/encoding_functions.md index 68cdb4fd566..534f1062616 100644 --- a/docs/ru/query_language/functions/encoding_functions.md +++ b/docs/ru/query_language/functions/encoding_functions.md @@ -2,7 +2,7 @@ ## char {#char} -Возвращает строку, длина которой равна числу переданных аргументов, и каждый байт имеет значение соответствующего аргумента. Принимает несколько числовых аргументов. +Возвращает строку, длина которой равна числу переданных аргументов, и каждый байт имеет значение соответствующего аргумента. Принимает несколько числовых аргументов. Если значение аргумента выходит за диапазон UInt8 (0..255), то оно преобразуется в UInt8 с возможным округлением и переполнением. **Синтаксис** @@ -16,7 +16,7 @@ char(number_1, [number_2, ..., number_n]); **Возвращаемое значение** -- Строка UTF-8 содержащая символы, полученные путем преобразования числовых аргументов. +- строка из соответствующих байт. Тип: `String`. @@ -36,6 +36,8 @@ SELECT char(104.1, 101, 108.9, 108.9, 111) AS hello └───────┘ ``` +Вы можете создать строку в произвольной кодировке, передав соответствующие байты. Пример для UTF-8: + Запрос: ```sql SELECT char(0xD0, 0xBF, 0xD1, 0x80, 0xD0, 0xB8, 0xD0, 0xB2, 0xD0, 0xB5, 0xD1, 0x82) AS hello;