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()