В MySQL можете да използвате FIELD()
функция за връщане на позицията на даден низ или число в списък с аргументи. Функцията връща индекса (позицията) на първия аргумент в списъка с последващи аргументи.
Синтаксисът е така:
FIELD(str,str1,str2,str3,...)
Където str
е елементът, който искате да намерите, и str1,str2,str3,...
е списъкът, в който търсите.
Ето един пример:
SELECT FIELD('Homer', 'Marge', 'Homer', 'Bart') AS 'Where is Homer?';
Резултат:
+-----------------+ | Where is Homer? | +-----------------+ | 2 | +-----------------+
В този пример списъкът е:'Marge', 'Homer', 'Bart'
и търсим низа Homer
в този списък. И тъй като Homer
е вторият елемент в списъка с аргументи, резултатът е 2
.
Точно съвпадение
Имайте предвид, че трябва да е точно съвпадение, в противен случай ще върне 0
.
Например, ако пуснем r
от Homer
, в крайна сметка търсим Home
вместо това:
SELECT FIELD('Home', 'Marge', 'Homer', 'Bart') AS 'Where is Home?';
Резултат:
+-----------------+ | Where is Home? | +-----------------+ | 0 | +-----------------+
В този случай, въпреки че Homer
съдържа Home
, не е точно съвпадение и резултатът е 0
.
Числа
FIELD()
функцията работи и с числа:
SELECT FIELD(1, 3, 2, 1) AS 'Where is 1?';
Резултат:
+-------------+ | Where is 1? | +-------------+ | 3 | +-------------+
Когато всички аргументи към FIELD()
са числа, всички аргументи се сравняват като числа. Ако всички са низове, те се сравняват като низове. Ако са смесени, те се сравняват като двойни.
FIELD()
функцията е допълнение към ELT()
функция, която ви позволява да намерите елемент от списъка по неговата позиция в списъка.
Вижте също как да върнете позицията на списъчен елемент с помощта на FIND_IN_SET()
функция.