# Функция ELT

Функция `ELT` выбирает одно из полей по его номеру (нумерация полей с единицы).

Номер поля задается первым параметром, а остальными параметрами задаются имена полей. Выглядит это примерно так: ELT(номер, поле1, поле2, поле2). Если, к примеру, вместо номера передать 1 - то выберется значение поля1, если 2 - значение поля2, если 3 - значение поля `3`.

Вместо полей могут быть строки или числа, например, так: ELT(номер, `'строка1'`, `2`, `'строка3'`). Можно также комбинировать строки, числа и поля: ELT(номер, `'строка1'`, `2`, поле1).

Если номер меньше, чем `1` или больше, чем число полей, возвращается NULL.

## Синтаксис

`SELECT ELT(число, поле1, поле2...) FROM имя_таблицы WHERE условие`

## Таблицы для примеров

таблица texts
id айди | field1 поле1 | field2 поле2 | field2 поле2
--- | --- | --- | ---
1 | поле1 | поле2 | поле3
2 | поле1 | поле2 | поле3
3 | поле1 | поле2 | поле3

таблица texts-num
id айди | field1 поле1 | field2 поле2 | field2 поле2 | number число
--- | --- | --- | --- | ---
1 | поле1 | поле2 | поле3 | 3
2 | поле1 | поле2 | поле3 | 2
3 | поле1 | поле2 | поле3 | 1

таблица users
id айди | name имя | date дата рождения
--- | --- | ---
1 | user1 | 1988-03-01
2 | user2 | 1989-04-02
3 | user3 | 1990-05-03

## Пример

В данном примере с помощью ELT выбирается содержимое первого поля из таблицы:

`SELECT id, ELT(1, field1, field2, field3) as elt FROM texts`

Результат выполнения кода:

id айди | elt поле
--- | ---
1 | поле1
2 | поле1
3 | поле1

## Пример

В данном примере с помощью ELT выбирается содержимое второго поля из таблицы:

`SELECT id, ELT(2, field1, field2, field3) as elt FROM texts`

Результат выполнения кода:

id айди | elt поле
--- | ---
1 | поле2
2 | поле2
3 | поле2

## Пример

В данном примере с помощью ELT выбирается содержимое третьего поля из таблицы:

`SELECT id, ELT(3, field1, field2, field3) as elt FROM texts`

Результат выполнения кода:

id айди | elt поле
--- | ---
1 | поле3
2 | поле3
3 | поле3

## Пример

В данном примере из таблицы texts_num с помощью ELT выбирается содержимое поля, номер которого задан полем `number`:

`SELECT id, number, ELT(number, field1, field2, field3) as elt FROM texts_num`

Результат выполнения кода:

id айди | number число | elt поле
--- | --- | ---
1 | 3 | поле3
2 | 2 | поле2
3 | 1 | поле1

## Пример

В данном примере из таблицы users с помощью ELT и функции `DAYOFWEEK` выводится день недели по-русски:

`SELECT *, ELT(DAYOFWEEK(date), 'вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб') as day FROM users`

Результат выполнения кода:

id айди | name имя | date дата рождения | day день недели
--- | --- | --- | ---
1 | user1 | 1988-03-01 | вт
2 | user2 | 1989-04-02 | вс
3 | user3 | 1990-05-03 | чт

## Смотрите также

- функцию `FIELD`,
  которая выбирает поле по его содержимому
- функцию `GREATEST`,
  которая находит максимальное из значений
- функцию `LEAST`,
  которая находит минимальное из значений

↑