Две подобни функции в MariaDB са FIELD()
и FIND_IN_SET()
. На пръв поглед изглежда, че те правят същото, но има разлика.
Тази статия разглежда разликата между тези две функции.
Синтаксис и дефиниции
Първо, нека разгледаме синтаксиса и дефиницията на всяка функция:
Функция | Синтаксис | Определение |
---|---|---|
FIELD() | FIELD(pattern, str1[,str2,...]) | Връща позицията на индекса на низа или числото, съответстващи на дадения шаблон. |
FIND_IN_SET() | FIND_IN_SET(pattern, strlist) | Връща позицията на индекса, където дадения модел се среща в списък с низове. |
И двете функции приемат pattern
като техен първи аргумент. Но това, което следва, подчертава техните разлики:
FIELD()
приема един или повече низове, разделени със запетая.FIND_IN_SET()
приема списък с един низ.
Пример
Ето пример, който демонстрира разликата между тези две функции:
SELECT
FIELD('bat', 'cat','dog','bat') AS "FIELD()",
FIND_IN_SET('bat', 'cat,dog,bat') AS "FIND_IN_SET()";
Резултат:
+---------+---------------+ | FIELD() | FIND_IN_SET() | +---------+---------------+ | 3 | 3 | +---------+---------------+
Всяка функция връща един и същ резултат, но всяка функция приема низовете в различен формат.
Стойностите, предоставени на FIELD()
идват като три отделни аргумента, докато стойностите, предоставени на FIND_IN_SET()
дойде като списък с един низ (който съдържа отделните стойности).