2020-10-26 10:29:30 +00:00
---
2022-04-09 13:29:05 +00:00
sidebar_position: 53
sidebar_label: "Функции для работы с UUID"
2020-10-26 10:29:30 +00:00
---
2020-03-20 18:20:59 +00:00
# Функции для работы с UUID {#funktsii-dlia-raboty-s-uuid}
2019-02-08 21:37:56 +00:00
2020-03-20 18:20:59 +00:00
## generateUUIDv4 {#uuid-function-generate}
2019-02-08 21:37:56 +00:00
Генерирует идентификатор [UUID версии 4 ](https://tools.ietf.org/html/rfc4122#section-4.4 ).
2022-05-22 23:13:43 +00:00
**Синтаксис**
2020-03-20 18:20:59 +00:00
``` sql
2022-05-22 23:13:43 +00:00
generateUUIDv4([x])
2019-02-08 21:37:56 +00:00
```
2022-05-22 23:13:43 +00:00
**Аргументы**
- `x` — [выражение ](../syntax.md#syntax-expressions ), возвращающее значение одного из [поддерживаемых типов данных ](../data-types/index.md#data_types ). Значение используется, чтобы избежать [склейки одинаковых выражений ](index.md#common-subexpression-elimination ), если функция вызывается несколько раз в одном запросе. Необязательный параметр.
2019-02-08 21:37:56 +00:00
**Возвращаемое значение**
2020-04-30 18:19:18 +00:00
Значение типа [UUID ](../../sql-reference/functions/uuid-functions.md ).
2019-02-08 21:37:56 +00:00
**Пример использования**
Этот пример демонстрирует, как создать таблицу с UUID-колонкой и добавить в нее сгенерированный UUID.
2020-03-20 18:20:59 +00:00
``` sql
2019-09-23 15:31:46 +00:00
CREATE TABLE t_uuid (x UUID) ENGINE=TinyLog
2019-02-08 21:37:56 +00:00
2019-09-23 15:31:46 +00:00
INSERT INTO t_uuid SELECT generateUUIDv4()
2019-02-08 21:37:56 +00:00
2019-09-23 15:31:46 +00:00
SELECT * FROM t_uuid
2019-02-08 21:37:56 +00:00
```
2020-03-20 18:20:59 +00:00
``` text
2019-02-08 21:37:56 +00:00
┌────────────────────────────────────x─┐
│ f4bf890f-f9dc-4332-ad5c-0c18e73f28e9 │
└──────────────────────────────────────┘
2021-08-12 13:18:33 +00:00
```
2022-05-22 23:13:43 +00:00
**Пример использования, для генерации нескольких значений в одной строке**
```sql
SELECT generateUUIDv4(1), generateUUIDv4(2)
┌─generateUUIDv4(1)────────────────────┬─generateUUIDv4(2)────────────────────┐
│ 2d49dc6e-ddce-4cd0-afb8-790956df54c1 │ 8abf8c13-7dea-4fdf-af3e-0e18767770e6 │
└──────────────────────────────────────┴──────────────────────────────────────┘
```
2021-08-12 13:18:33 +00:00
## empty {#empty}
Проверяет, является ли входной UUID пустым.
**Синтаксис**
```sql
empty(UUID)
```
UUID считается пустым, если он содержит все нули (нулевой UUID).
2021-08-12 13:43:56 +00:00
Функция также поддерживает работу с типами [Array ](array-functions.md#function-empty ) и [String ](string-functions.md#empty ).
2021-08-12 13:18:33 +00:00
**Параметры**
- `x` — UUID на входе функции. [UUID ](../data-types/uuid.md ).
**Возвращаемое значение**
- Возвращает `1` для пустого UUID или `0` — для непустого UUID.
Тип: [UInt8 ](../data-types/int-uint.md ).
**Пример**
Для генерации UUID-значений предназначена функция [generateUUIDv4 ](#uuid-function-generate ).
Запрос:
```sql
SELECT empty(generateUUIDv4());
```
Ответ:
```text
┌─empty(generateUUIDv4())─┐
│ 0 │
└─────────────────────────┘
```
## notEmpty {#notempty}
Проверяет, является ли входной UUID непустым.
**Синтаксис**
```sql
notEmpty(UUID)
```
UUID считается пустым, если он содержит все нули (нулевой UUID).
2021-08-12 13:43:56 +00:00
Функция также поддерживает работу с типами [Array ](array-functions.md#function-notempty ) и [String ](string-functions.md#function-notempty ).
2021-08-12 13:18:33 +00:00
**Параметры**
- `x` — UUID на входе функции. [UUID ](../data-types/uuid.md ).
**Возвращаемое значение**
- Возвращает `1` для непустого UUID или `0` — для пустого UUID.
Тип: [UInt8 ](../data-types/int-uint.md ).
**Пример**
Для генерации UUID-значений предназначена функция [generateUUIDv4 ](#uuid-function-generate ).
Запрос:
```sql
SELECT notEmpty(generateUUIDv4());
```
Результат:
```text
┌─notEmpty(generateUUIDv4())─┐
│ 1 │
└────────────────────────────┘
2019-02-08 21:37:56 +00:00
```
2020-03-20 18:20:59 +00:00
## toUUID (x) {#touuid-x}
2019-02-08 21:37:56 +00:00
Преобразует значение типа String в тип UUID.
2020-03-20 18:20:59 +00:00
``` sql
2019-02-08 21:37:56 +00:00
toUUID(String)
```
**Возвращаемое значение**
Значение типа UUID.
**Пример использования**
2020-03-20 18:20:59 +00:00
``` sql
2019-09-23 15:31:46 +00:00
SELECT toUUID('61f0c404-5cb3-11e7-907b-a6006ad3dba0') AS uuid
2019-02-08 21:37:56 +00:00
```
2020-03-20 18:20:59 +00:00
``` text
2019-02-08 21:37:56 +00:00
┌─────────────────────────────────uuid─┐
│ 61f0c404-5cb3-11e7-907b-a6006ad3dba0 │
└──────────────────────────────────────┘
```
2020-11-04 00:05:06 +00:00
## toUUIDOrNull (x) {#touuidornull-x}
Принимает строку, и пытается преобразовать в тип UUID. При неудаче возвращает NULL.
``` sql
toUUIDOrNull(String)
```
**Возвращаемое значение**
Значение типа Nullable(UUID).
**Пример использования**
``` sql
SELECT toUUIDOrNull('61f0c404-5cb3-11e7-907b-a6006ad3dba0T') AS uuid
```
``` text
┌─uuid─┐
│ ᴺᵁᴸᴸ │
└──────┘
```
## toUUIDOrZero (x) {#touuidorzero-x}
Принимает строку, и пытается преобразовать в тип UUID. При неудаче возвращает нулевой UUID.
``` sql
toUUIDOrZero(String)
```
**Возвращаемое значение**
Значение типа UUID.
**Пример использования**
``` sql
SELECT toUUIDOrZero('61f0c404-5cb3-11e7-907b-a6006ad3dba0T') AS uuid
```
``` text
┌─────────────────────────────────uuid─┐
│ 00000000-0000-0000-0000-000000000000 │
└──────────────────────────────────────┘
```
2020-03-20 18:20:59 +00:00
## UUIDStringToNum {#uuidstringtonum}
2019-02-08 21:37:56 +00:00
2020-04-30 18:19:18 +00:00
Принимает строку, содержащую 36 символов в формате `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` , и возвращает в виде набора байт в [FixedString(16) ](../../sql-reference/functions/uuid-functions.md ).
2019-02-08 21:37:56 +00:00
2020-03-20 18:20:59 +00:00
``` sql
2019-02-08 21:37:56 +00:00
UUIDStringToNum(String)
```
**Возвращаемое значение**
FixedString(16)
**Пример использования**
2020-03-20 18:20:59 +00:00
``` sql
SELECT
'612f3c40-5d3b-217e-707b-6a546a3d7b29' AS uuid,
2019-02-08 21:37:56 +00:00
UUIDStringToNum(uuid) AS bytes
```
2020-03-20 18:20:59 +00:00
``` text
2019-02-08 21:37:56 +00:00
┌─uuid─────────────────────────────────┬─bytes────────────┐
│ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │ a/< @];!~p{jTj={) │
└──────────────────────────────────────┴──────────────────┘
```
2020-03-20 18:20:59 +00:00
## UUIDNumToString {#uuidnumtostring}
2019-02-08 21:37:56 +00:00
2020-04-30 18:19:18 +00:00
Принимает значение типа [FixedString(16) ](../../sql-reference/functions/uuid-functions.md ). Возвращает строку из 36 символов в текстовом виде.
2019-02-08 21:37:56 +00:00
2020-03-20 18:20:59 +00:00
``` sql
2019-02-08 21:37:56 +00:00
UUIDNumToString(FixedString(16))
```
**Возвращаемое значение**
Значение типа String.
**Пример использования**
2020-03-20 18:20:59 +00:00
``` sql
SELECT
'a/< @];!~p{jTj={)' AS bytes,
2019-02-08 21:37:56 +00:00
UUIDNumToString(toFixedString(bytes, 16)) AS uuid
```
2020-03-20 18:20:59 +00:00
``` text
2019-02-08 21:37:56 +00:00
┌─bytes────────────┬─uuid─────────────────────────────────┐
│ a/< @];!~p{jTj={) │ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │
└──────────────────┴──────────────────────────────────────┘
```
2021-08-27 18:50:31 +00:00
## serverUUID() {#server-uuid}
2021-08-28 08:55:54 +00:00
Возвращает случайный и уникальный UUID, который генерируется при первом запуске сервера и сохраняется навсегда. Результат записывается в файл `uuid` , расположенный в каталоге сервера ClickHouse `/var/lib/clickhouse/` .
2021-08-27 18:50:31 +00:00
**Синтаксис**
```sql
serverUUID()
```
**Возвращаемое значение**
- UUID сервера.
Тип: [UUID ](../data-types/uuid.md ).
2020-03-20 18:20:59 +00:00
## См. также: {#sm-takzhe}
2019-02-08 21:37:56 +00:00
2020-04-30 18:19:18 +00:00
- [dictGetUUID ](ext-dict-functions.md )
- [dictGetUUIDOrDefault ](ext-dict-functions.md )