Функция ELT
Функция ELT выбирает одно из полей
по его номеру (нумерация полей с единицы).
Номер поля задается первым параметром, а
остальными параметрами задаются имена полей.
Выглядит это примерно так: ELT(номер,
поле1, поле2, поле2). Если, к примеру,
вместо номера передать 1 - то выберется значение
поля1, если 2 - значение поля2, если 3 -
значение поля 3.
Вместо полей могут быть строки или числа,
например, так: ELT(номер, 'строка1',
2, 'строка3'). Можно также
комбинировать строки, числа и поля: ELT(номер,
'строка1', 2, поле1).
Если номер меньше, чем 1 или больше,
чем число полей, возвращается NULL.
Синтаксис
SELECT ELT(number, value1, value2, value3) FROM table_name WHERE condition
Таблицы для примеров
| id | field1 | field2 | field3 |
|---|---|---|---|
| 1 | value1 | value2 | value3 |
| 2 | value1 | value2 | value3 |
| 3 | value1 | value2 | value3 |
| id | field1 | field2 | field3 | number |
|---|---|---|---|---|
| 1 | value1 | value2 | value3 | 3 |
| 2 | value1 | value2 | value3 | 2 |
| 3 | value1 | value2 | value3 | 1 |
| id | name | birth_date |
|---|---|---|
| 1 | user1 | 1988-03-01 |
| 2 | user2 | 1989-04-02 |
| 3 | user3 | 1990-05-03 |
Пример
Давайте выберем первое значение:
SELECT id, ELT(1, field1, field2, field3) AS elt FROM texts
Результат выполнения кода:
| id | elt |
|---|---|
| 1 | value1 |
| 2 | value1 |
| 3 | value1 |
Пример
Давайте выберем значение по номеру из поля:
SELECT id, number, ELT(number, field1, field2, field3) AS elt FROM texts_num
Результат выполнения кода:
| id | number | elt |
|---|---|---|
| 1 | 3 | value3 |
| 2 | 2 | value2 |
| 3 | 1 | value1 |
Пример
Давайте определим день недели с помощью ELT:
SELECT
id,
name,
birth_date,
ELT(
DAYOFWEEK(birth_date),
'вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'
) AS day
FROM users
Результат выполнения кода:
| id | name | birth_date | day |
|---|---|---|---|
| 1 | user1 | 1988-03-01 | вт |
| 2 | user2 | 1989-04-02 | вс |
| 3 | user3 | 1990-05-03 | чт |