Skip to content

FIELD()

函数说明

FIELD() 函数返回第一个字符串 str 在字符串列表 (str1,str2,str3,...) 中的位置。

语法说明

> FIELD(str,str1,str2,str3,...)

参数释义

参数 说明
str 必要参数。要在列表中查找的值,且不区分大小写。
str1,str2,str3,... 必要参数。被搜索的列表中的各个元素,且不区分大小写。

返回值

如果 FIELD() 的所有参数都是 string 类型,则所有参数都作为 string 类型进行比较。如果所有参数都是数字,则将它们作为数字进行比较。如果所有参数都是 double 类型,则将它们作为 double 类型进行比较。

  • 如果在列表中找到指定的值,FIELD() 函数返回对应的位置索引。FIELD() 函数返回的索引的值从 1 开始。

  • 如果在列表中找到多个指定的值,FIELD() 函数只返回第一个的索引值。

  • 如果在列表中找不到指定的值,FIELD() 函数返回 0。

  • 如果要查找的值为 NULLFIELD() 函数返回 0。

示例

  • 示例 1:
mysql> SELECT FIELD('Bb', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff');
+-------------------------------+
| field(Bb, Aa, Bb, Cc, Dd, Ff) |
+-------------------------------+
|                             2 |
+-------------------------------+
1 row in set (0.00 sec)

mysql> SELECT FIELD('Gg', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff');
+-------------------------------+
| field(Gg, Aa, Bb, Cc, Dd, Ff) |
+-------------------------------+
|                             0 |
+-------------------------------+
1 row in set (0.00 sec)
  • 示例 2:
drop table if exists t;
create table t(
    i int,
    f float,
    d double
);
insert into t() values (1, 1.1, 2.2), (2, 3.3, 4.4), (0, 0, 0), (0, null, 0);

mysql> select * from t;
+------+------+------+
| i    | f    | d    |
+------+------+------+
|    1 |  1.1 |  2.2 |
|    2 |  3.3 |  4.4 |
|    0 |    0 |    0 |
|    0 | NULL |    0 |
+------+------+------+
4 rows in set (0.01 sec)

mysql> select field(1, i, f, d) from t;
+-------------------+
| field(1, i, f, d) |
+-------------------+
|                 1 |
|                 0 |
|                 0 |
|                 0 |
+-------------------+
4 rows in set (0.01 sec)

mysql> select field(i, f, d, 0, 1, 2) from t;
+-------------------------+
| field(i, f, d, 0, 1, 2) |
+-------------------------+
|                       4 |
|                       5 |
|                       1 |
|                       2 |
+-------------------------+
4 rows in set (0.01 sec)

mysql> select field('1', f, d, 0, 1, 2) from t;
+-------------------------+
| field(1, f, d, 0, 1, 2) |
+-------------------------+
|                       4 |
|                       4 |
|                       4 |
|                       4 |
+-------------------------+
4 rows in set (0.01 sec)