diff options
author | udovichenko-r <rvu@ydb.tech> | 2023-11-29 19:52:40 +0300 |
---|---|---|
committer | udovichenko-r <rvu@ydb.tech> | 2023-11-29 20:15:49 +0300 |
commit | a822d36fa56ca37d73ad30bd7adf0285a8b9f8c5 (patch) | |
tree | 8b138e05b59538c052615572f1845eb0bd517aaf | |
parent | 5d3f54afc037897ab8afc9670c9a708152ed67f5 (diff) | |
download | ydb-a822d36fa56ca37d73ad30bd7adf0285a8b9f8c5.tar.gz |
[docs] Detailed type casts
YQL-17252
-rw-r--r-- | ydb/docs/ru/core/yql/reference/yql-core/types/_includes/primitive.md | 110 |
1 files changed, 69 insertions, 41 deletions
diff --git a/ydb/docs/ru/core/yql/reference/yql-core/types/_includes/primitive.md b/ydb/docs/ru/core/yql/reference/yql-core/types/_includes/primitive.md index 0af21dfa4b..afb950b857 100644 --- a/ydb/docs/ru/core/yql/reference/yql-core/types/_includes/primitive.md +++ b/ydb/docs/ru/core/yql/reference/yql-core/types/_includes/primitive.md @@ -25,36 +25,49 @@ ### Приведение к численным типам -Тип | Bool | Int | Uint | Float | Double | Decimal ---- | --- | --- | --- | --- | --- | --- -**Bool** | — | Да<sup>1</sup> | Да<sup>1</sup> | Да<sup>1</sup> | Да<sup>1</sup> | Нет | Да | Нет -**Int** | Да<sup>2</sup> | — | Да<sup>3</sup> | Да | Да | Да -**Uint** | Да<sup>2</sup> | Да | — | Да | Да | Да -**Float** | Да<sup>2</sup> | Да | Да | — | Да | Нет -**Double** | Да<sup>2</sup> | Да | Да | Да | — | Нет -**Decimal** | Нет | Да | Да | Да | Да | — -**String** | Да | Да | Да | Да | Да | Да -**Utf8** | Да | Да | Да | Да | Да | Да -**Json** | Нет | Нет | Нет | Нет | Нет | Нет -**Yson** | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> -**Uuid** | Нет | Нет | Нет | Нет | Нет | Нет -**Date** | Нет | Да | Да | Да | Да | Нет | Да -**Datetime** | Нет | Да | Да | Да | Да | Нет -**Timestamp** | Нет | Да | Да | Да | Да | Нет -**Interval** | Нет | Да | Да | Да | Да | Нет +Тип | Bool | Int8 | Int16 | Int32 | Int64 | Uint8 | Uint16 | Uint32 | Uint64 | Float | Double | Decimal +--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- +**Bool** | — | Да<sup>1</sup> | Да<sup>1</sup> | Да<sup>1</sup> | Да<sup>1</sup> | Да<sup>1</sup> | Да<sup>1</sup> | Да<sup>1</sup> | Да<sup>1</sup> | Да<sup>1</sup> | Да<sup>1</sup> | Нет +**Int8** | Да<sup>2</sup> | — | Да | Да | Да | Да<sup>3</sup> | Да<sup>3</sup> | Да<sup>3</sup> | Да<sup>3</sup> | Да | Да | Да +**Int16** | Да<sup>2</sup> | Да<sup>4</sup> | — | Да | Да | Да<sup>3,4</sup> | Да<sup>3</sup> | Да<sup>3</sup> | Да<sup>3</sup> | Да | Да | Да +**Int32** | Да<sup>2</sup> | Да<sup>4</sup> | Да<sup>4</sup> | — | Да | Да<sup>3,4</sup> | Да<sup>3,4</sup> | Да<sup>3</sup> | Да<sup>3</sup> | Да | Да | Да +**Int64** | Да<sup>2</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | — | Да<sup>3,4</sup> | Да<sup>3,4</sup> | Да<sup>3,4</sup> | Да<sup>3</sup> | Да | Да | Да +**Uint8** | Да<sup>2</sup> | Да<sup>4</sup> | Да | Да | Да | — | Да | Да | Да | Да | Да | Да +**Uint16** | Да<sup>2</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да | Да | Да<sup>4</sup> | — | Да | Да | Да | Да | Да +**Uint32** | Да<sup>2</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да | Да<sup>4</sup> | Да<sup>4</sup> | — | Да | Да | Да | Да +**Uint64** | Да<sup>2</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | — | Да | Да | Да +**Float** | Да<sup>2</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>3,4</sup> | Да<sup>3,4</sup> | Да<sup>3,4</sup> | Да<sup>3,4</sup> | — | Да | Нет +**Double** | Да<sup>2</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>3,4</sup> | Да<sup>3,4</sup> | Да<sup>3,4</sup> | Да<sup>3,4</sup> | Да | — | Нет +**Decimal** | Нет | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да | — +**String** | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да +**Utf8** | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да +**Json** | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет +**Yson** | Да<sup>5</sup> | Да<sup>5</sup> | Да<sup>5</sup> | Да<sup>5</sup> | Да<sup>5</sup> | Да<sup>5</sup> | Да<sup>5</sup> | Да<sup>5</sup> | Да<sup>5</sup> | Да<sup>5</sup> | Да<sup>5</sup> | Нет +**Uuid** | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет +**Date** | Нет | Да<sup>4</sup> | Да<sup>4</sup> | Да | Да | Да<sup>4</sup> | Да | Да | Да | Да | Да | Да | Нет +**Datetime** | Нет | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да | Да<sup>4</sup> | Да<sup>4</sup> | Да | Да | Да | Да | Нет +**Timestamp** | Нет | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да | Да | Да | Нет +**Interval** | Нет | Да<sup>4</sup> | Да<sup>4</sup> | Да<sup>4</sup> | Да | Да<sup>3,4</sup> | Да<sup>3,4</sup> | Да<sup>3,4</sup> | Да<sup>3</sup> | Да | Да | Нет <sup>1</sup> `True` преобразуется в `1`, `False` преобразуется в `0`. <sup>2</sup> Любое значение кроме `0` преобразуется в `True`, `0` преобразуется в `False`. <sup>3</sup> Возможно только в случае неотрицательного значения. -<sup>4</sup> При помощи встроенной функции [Yson::ConvertTo](../../udf/list/yson.md#ysonconvertto). +<sup>4</sup> Возможно только в случае попадания в диапазон допустимых значений. +<sup>5</sup> При помощи встроенной функции [Yson::ConvertTo](../../udf/list/yson.md#ysonconvertto). ### Приведение к типам данных даты и времени Тип | Date | Datetime | Timestamp | Interval ---- | --- | --- | --- | --- +--- | --- | --- | --- | --- **Bool** | Нет | Нет | Нет | Нет -**Int** | Да | Да | Да | Да -**Uint** | Да | Да | Да | Да +**Int8** | Да | Да | Да | Да +**Int16** | Да | Да | Да | Да +**Int32** | Да | Да | Да | Да +**Int64** | Да | Да | Да | Да +**Uint8** | Да | Да | Да | Да +**Uint16** | Да | Да | Да | Да +**Uint32** | Да | Да | Да | Да +**Uint64** | Да | Да | Да | Да **Float** | Нет | Нет | Нет | Нет **Double** | Нет | Нет | Нет | Нет **Decimal** | Нет | Нет | Нет | Нет @@ -71,24 +84,30 @@ ### Приведение к другим типам данных Тип | String | Utf8 | Json | Yson | Uuid ---- | --- | --- | --- | --- | --- -**Bool** | Да | Нет | Нет | Нет | Нет | -**Int** | Да | Нет | Нет | Нет | Нет -**Uint** | Да | Нет | Нет | Нет | Нет +--- | --- | --- | --- | --- | --- +**Bool** | Да | Нет | Нет | Нет | Нет | +**Int8** | Да | Нет | Нет | Нет | Нет +**Int16** | Да | Нет | Нет | Нет | Нет +**Int32** | Да | Нет | Нет | Нет | Нет +**Int64** | Да | Нет | Нет | Нет | Нет +**Uint8** | Да | Нет | Нет | Нет | Нет +**Uint16** | Да | Нет | Нет | Нет | Нет +**Uint32** | Да | Нет | Нет | Нет | Нет +**Uint64** | Да | Нет | Нет | Нет | Нет **Float** | Да | Нет | Нет | Нет | Нет **Double** | Да | Нет | Нет | Нет | Нет -**Decimal** | Да | Нет | Нет | Нет | Нет +**Decimal** | Да | Нет | Нет | Нет | Нет **String** | — | Да | Да | Да | Да **Utf8** | Да | — | Нет | Нет | Нет **Json** | Да | Да | — | Нет | Нет -**Yson** | Да<sup>4</sup> | Нет | Нет | Нет | Нет +**Yson** | Да<sup>1</sup> | Нет | Нет | Нет | Нет **Uuid** | Да | Да | Нет | Нет | — **Date** | Да | Да | Нет | Нет | Нет **Datetime** | Да | Да | Нет | Нет | Нет **Timestamp** | Да | Да | Нет | Нет | Нет **Interval** | Да | Да | Нет | Нет | Нет -<sup>4</sup> При помощи встроенной функции [Yson::ConvertTo](../../udf/list/yson.md#ysonconvertto). +<sup>1</sup> При помощи встроенной функции [Yson::ConvertTo](../../udf/list/yson.md#ysonconvertto). **Примеры** @@ -96,25 +115,34 @@ ## Неявное приведение {#implicit-cast} -Неявное приведение типов, которое возникает в базовых операциях (+-\*/) между разными типами данных. В ячейках таблицы указан тип результата операции, если она возможна: +Неявное приведение типов, которое возникает в базовых операциях (`+`, `-`, `*`, `/`, `%`) между разными типами данных. В ячейках таблицы указан тип результата операции, если она возможна: ### Численные типы -Тип | Int | Uint | Float | Double ---- | --- | --- | --- | --- -**Int** | — | `Int` | `Float` | `Double` -**Uint** | `Int` | — | `Float` | `Double` -**Float** | `Float` | `Float` | — | `Double` -**Double** | `Double` | `Double` | `Double` | — +При несовпадении численных типов сначала выполняется BitCast обоих аргументов к типу результата, а потом уже операция. + +Тип | Int8 | Int16 | Int32 | Int64 | Uint8 | Uint16 | Uint32 | Uint64 | Float | Double +--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- +**Int8** | — | `Int16` | `Int32` | `Int64` | `Int8` | `Uint16` | `Uint32` | `Uint64` | `Float` | `Double` +**Int16** | `Int16` | — | `Int32` | `Int64` | `Int16` | `Int16` | `Uint32` | `Uint64` | `Float` | `Double` +**Int32** | `Int32` | `Int32` | — | `Int64` | `Int32` | `Int32` | `Int32` | `Uint64` | `Float` | `Double` +**Int64** | `Int64` | `Int64` | `Int64` | — | `Int64` | `Int64` | `Int64` | `Int64` | `Float` | `Double` +**Uint8** | `Int8` | `Int16` | `Int32` | `Int64` | — | `Uint16` | `Uint32` | `Uint64` | `Float` | `Double` +**Uint16** | `Uint16` | `Int16` | `Int32` | `Int64` | `Uint16` | — | `Uint32` | `Uint64` | `Float` | `Double` +**Uint32** | `Uint32` | `Uint32` | `Int32` | `Int64` | `Uint32` | `Uint32` | — | `Uint64` | `Float` | `Double` +**Uint64** | `Uint64` | `Uint64` | `Uint64` | `Int64` | `Uint64` | `Uint64` | `Uint64` | — | `Float` | `Double` +**Float** | `Float` | `Float` | `Float` | `Float` | `Float` | `Float` | `Float` | `Float` | — | `Double` +**Double** | `Double` | `Double` | `Double` | `Double` | `Double` | `Double` | `Double` | `Double` | `Double` | — + ### Типы даты и времени Тип | Date | Datetime | Timestamp | Interval | TzDate | TzDatetime | TzTimestamp --- | --- | --- | --- | --- | --- | --- | --- -**Date** | — | — | — | `Date` | — | — | — -**Datetime** | — | — | — | `Datetime` | — | — | — -**Timestamp** | — | — | — | `Timestamp` | — | — | — +**Date** | — | — | — | `Date` | — | — | — +**Datetime** | — | — | — | `Datetime` | — | — | — +**Timestamp** | — | — | — | `Timestamp` | — | — | — **Interval** | `Date` | `Datetime` | `Timestamp` | — | `TzDate` | `TzDatetime` | `TzTimestamp` -**TzDate** | — | — | — | `TzDate` | — | — | — -**TzDatetime** | — | — | — | `TzDatetime` | — | — | — -**TzTimestamp** | — | — | — | `TzTimestamp` | — | — | — +**TzDate** | — | — | — | `TzDate` | — | — | — +**TzDatetime** | — | — | — | `TzDatetime` | — | — | — +**TzTimestamp** | — | — | — | `TzTimestamp` | — | — | — |