Перейти к основному содержимому
Перейти к основному содержимому

Табличная функция Values

Табличная функция Values позволяет создавать временное хранилище, которое заполняет колонки значениями. Она полезна для быстрого тестирования или генерации выборочных данных.

примечание

Values — регистронезависимая функция. То есть, VALUES и values оба допустимы.

Синтаксис

Основной синтаксис табличной функции VALUES:

VALUES([структура,] значения...)

Часто используется так:

VALUES(
    ['имя_колонки1 Тип1, имя_колонки2 Тип2, ...'],
    (значение1_строка1, значение2_строка1, ...),
    (значение1_строка2, значение2_строка2, ...),
    ...
)

Аргументы

  • имя_колонки1 Тип1, ... (необязательный). Строка указывающая имена и типы колонок. Если этот аргумент опустить, колонки будут названы как c1, c2 и так далее.
  • (значение1_строка1, значение2_строка1). Кортежи содержащие значения любого типа.
примечание

Разделенные запятыми кортежи могут быть также заменены на одиночные значения. В этом случае каждое значение принимается за новую строку. Смотрите раздел примеры для подробностей.

Возвращаемое значение

  • Возвращает временную таблицу, содержащую указанные значения.

Примеры

SELECT *
FROM VALUES(
    'person String, place String',
    ('Noah', 'Paris'),
    ('Emma', 'Tokyo'),
    ('Liam', 'Sydney'),
    ('Olivia', 'Berlin'),
    ('Ilya', 'London'),
    ('Sophia', 'London'),
    ('Jackson', 'Madrid'),
    ('Alexey', 'Amsterdam'),
    ('Mason', 'Venice'),
    ('Isabella', 'Prague')
)
    ┌─person───┬─place─────┐
 1. │ Noah     │ Paris     │
 2. │ Emma     │ Tokyo     │
 3. │ Liam     │ Sydney    │
 4. │ Olivia   │ Berlin    │
 5. │ Ilya     │ London    │
 6. │ Sophia   │ London    │
 7. │ Jackson  │ Madrid    │
 8. │ Alexey   │ Amsterdam │
 9. │ Mason    │ Venice    │
10. │ Isabella │ Prague    │
    └──────────┴───────────┘

VALUES также может использоваться с одиночными значениями вместо кортежей. Например:

SELECT *
FROM VALUES(
    'person String',
    'Noah',
    'Emma',
    'Liam',
    'Olivia',
    'Ilya',
    'Sophia',
    'Jackson',
    'Alexey',
    'Mason',
    'Isabella'
)
    ┌─person───┐
 1. │ Noah     │
 2. │ Emma     │
 3. │ Liam     │
 4. │ Olivia   │
 5. │ Ilya     │
 6. │ Sophia   │
 7. │ Jackson  │
 8. │ Alexey   │
 9. │ Mason    │
10. │ Isabella │
    └──────────┘

Или без указания спецификации строки ('имя_колонки1 Тип1, имя_колонки2 Тип2, ...' в синтаксисе), в этом случае колонки получают автоматические названия.

Например:

-- кортежи как значения
SELECT *
FROM VALUES(
    ('Noah', 'Paris'),
    ('Emma', 'Tokyo'),
    ('Liam', 'Sydney'),
    ('Olivia', 'Berlin'),
    ('Ilya', 'London'),
    ('Sophia', 'London'),
    ('Jackson', 'Madrid'),
    ('Alexey', 'Amsterdam'),
    ('Mason', 'Venice'),
    ('Isabella', 'Prague')
)
    ┌─c1───────┬─c2────────┐
 1. │ Noah     │ Paris     │
 2. │ Emma     │ Tokyo     │
 3. │ Liam     │ Sydney    │
 4. │ Olivia   │ Berlin    │
 5. │ Ilya     │ London    │
 6. │ Sophia   │ London    │
 7. │ Jackson  │ Madrid    │
 8. │ Alexey   │ Amsterdam │
 9. │ Mason    │ Venice    │
10. │ Isabella │ Prague    │
    └──────────┴───────────┘
-- одиночные значения
SELECT *
FROM VALUES(
    'Noah',
    'Emma',
    'Liam',
    'Olivia',
    'Ilya',
    'Sophia',
    'Jackson',
    'Alexey',
    'Mason',
    'Isabella'
)
    ┌─c1───────┐
 1. │ Noah     │
 2. │ Emma     │
 3. │ Liam     │
 4. │ Olivia   │
 5. │ Ilya     │
 6. │ Sophia   │
 7. │ Jackson  │
 8. │ Alexey   │
 9. │ Mason    │
10. │ Isabella │
    └──────────┘

См. также