MySQL поддържа някои функции, които могат да се използват за извличане на позицията на индекса или действителната стойност от набор от стойности, подредени като масив. ELT() и FIELD() са примери за такива функции. Нека разберем подробно за тях.
Функцията ELT() приема много аргументи, където първият аргумент е числото. Връща стойността, която е налична на позицията, посочена в първия аргумент.
SELECT ELT(3,'SQL','ORACLE','My SQL','SQL SERVER') AS ColumnName;
Горената заявка връща резултати като „Моят SQL“. От набора от налични стойности, той връща 3-тата стойност, която е My SQL. Връща NULL, ако първият аргумент е 0, по-малък от нула или по-голям от общия брой аргументи
SELECT ELT(0,'SQL','ORACLE','My SQL','SQL SERVER') AS ColumnName;
Ето още два примера, които ще върнат резултата като нулева стойност.
SELECT ELT(31,'SQL','ORACLE','My SQL','SQL SERVER') AS ColumnName;
SELECT ELT(-5,'SQL','ORACLE','My SQL','SQL SERVER') AS ColumnName;
Всички по-горе връщат NULL стойност.
Функцията FILED() е точно противоположна на ELT(). Той приема много аргументи и връща позицията на стойността в масива, посочен като първа стойност
SELECT FIELD('My SQL','SQL','ORACLE','My SQL','SQL SERVER') AS ColumnName;
Посоченото по-горе връща 3, тъй като стойността, посочена в първия аргумент „Моят SQL“, е налична на 3-та позиция в масива.
Връща 0, ако стойността не е посочена в масива
SELECT FIELD('COMPUTER','SQL','ORACLE','My SQL','SQL SERVER') AS ColumnName;
Резултатът е 0.
Използвали ли сте някога тези функции във вашата бизнес логика? Ако да, бих искал да ги познавам.