MariaDB FIELD() vs FIND_IN_SET(): 有什么区别?

发布于

MariaDB 中的两个类似函数是 和 。乍一看,这些似乎做同样的事情,但有区别。[FIELD()](https://database.guide/how-field-works-in-mariadb/ "How FIELD() Works in MariaDB")``[FIND_IN_SET()](https://database.guide/how-find_in_set-works-in-mariadb/ "How FIND_IN_SET() Works in MariaDB")

本文将探讨这两个函数之间的区别。

语法和定义

首先,让我们看一下每个函数的语法和定义:

功能 语法 定义
FIELD() FIELD(pattern, str1[,str2,...]) 返回与给定模式匹配的字符串或数字的索引位置。
FIND_IN_SET() FIND_IN_SET(pattern, strlist) 返回给定模式在字符串列表中出现的索引位置。

这两个函数都接受 a 作为其第一个参数。然而,接下来的事情突出了它们的差异: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()