MariaDB
 sql >> база данни >  >> RDS >> MariaDB

MariaDB FIELD() срещу FIND_IN_SET():Каква е разликата?

Две подобни функции в 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() дойде като списък с един низ (който съдържа отделните стойности).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB JSON функции

  2. Как автоматично да управлявате отказ на MySQL база данни за Moodle

  3. MariaDB JSON_ARRAY_APPEND() Обяснено

  4. Поддръжка за MariaDB 10.4 в надстроено dbForge Studio за MySQL, v.8.1

  5. MariaDB GROUP_CONCAT()