Функция ELT выбирает одно из полей по его номеру (нумерация полей с единицы).
Номер поля задается первым параметром, а остальными параметрами задаются имена полей. Выглядит это примерно так: ELT(номер, поле1, поле2, поле2). Если, к примеру, вместо номера передать 1 - то выберется значение поля1, если 2 - значение поля2, если 3 - значение поля 3.
Вместо полей могут быть строки или числа, например, так: ELT(номер, 'строка1', 2, 'строка3'). Можно также комбинировать строки, числа и поля: ELT(номер, 'строка1', 2, поле1).
Если номер меньше, чем 1 или больше, чем число полей, возвращается NULL.
См. также функцию FIELD, которое выбирает поле по его содержимому.
См. также функцию GREATEST, которая находит максимальное из значений.
См. также функцию LEAST, которая находит минимальное из значений.
Синтаксис
SELECT ELT(число, поле1, поле2...) FROM имя_таблицы WHERE условие
Примеры
Все примеры будут по этой таблице texts, если не сказано иное:
id айди |
field1 поле1 |
field2 поле2 |
field3 поле3 |
---|---|---|---|
1 | поле1 | поле2 | поле3 |
2 | поле1 | поле2 | поле3 |
3 | поле1 | поле2 | поле3 |
Пример
В данном примере с помощью ELT выбирается содержимое первого поля:
SELECT number, ELT(1, field1, field2, field3) as elt FROM texts
SQL запрос выберет следующие строки:
id айди |
elt поле |
---|---|
1 | поле1 |
2 | поле1 |
3 | поле1 |
Пример
В данном примере с помощью ELT выбирается содержимое второго поля:
SELECT number, ELT(2, field1, field2, field3) as elt FROM texts
SQL запрос выберет следующие строки:
id айди |
elt поле |
---|---|
1 | поле2 |
2 | поле2 |
3 | поле2 |
Пример
В данном примере с помощью ELT выбирается содержимое третьего поля:
SELECT number, ELT(3, field1, field2, field3) as elt FROM texts
SQL запрос выберет следующие строки:
id айди |
elt поле |
---|---|
1 | поле3 |
2 | поле3 |
3 | поле3 |
Меняем таблицу для примеров
Остальные примеры будут по этой таблице texts:
id айди |
number число |
field1 поле1 |
field2 поле2 |
field2 поле2 |
---|---|---|---|---|
1 | 3 | поле1 | поле2 | поле3 |
2 | 2 | поле1 | поле2 | поле3 |
3 | 1 | поле1 | поле2 | поле3 |
Пример
В данном примере с помощью ELT выбирается содержимое поля, номер которого задан полем number:
SELECT number, ELT(number, field1, field2, field3) as elt FROM texts
SQL запрос выберет следующие строки:
id айди |
number число |
elt поле |
---|---|---|
1 | 3 | поле3 |
2 | 2 | поле2 |
3 | 1 | поле1 |
Меняем таблицу для примеров
Остальные примеры будут по этой таблице users:
id айди |
name имя |
date дата рождения |
---|---|---|
1 | Дима | 1988-03-01 |
2 | Петя | 1989-04-02 |
3 | Вася | 1990-05-03 |
Пример
В данном примере с помощью ELT и функции DAYOFWEEK выводится день недели по-русски:
SELECT *, ELT(DAYOFWEEK(date), 'вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб') as day FROM users
SQL запрос выберет следующие строки:
id айди |
name имя |
date дата рождения |
day день недели |
---|---|---|---|
1 | Дима | 1988-03-01 | вт |
2 | Петя | 1989-04-02 | вс |
3 | Вася | 1990-05-03 | чт |