首页 MySQL FIELD() 函数

MySQL FIELD() 函数

MySQL FIELD() 函数返回一个指定的值在给定的列表中的索引。

FIELD() 语法

这里是 MySQL FIELD() 函数的语法:

FIELD(value, v1, v2, ..., vN)

参数说明

value
必须的。要在列表中查找的值。
v1, v2, ..., vN
必须的。被搜索的列表中的各个元素。

返回值

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

FIELD() 示例

简单示例

  • 如果你需要知道 'A' 在列表 'A', 'B', 'C' 中的位置,可以使用如下语句:

    SELECT FIELD('A', 'A', 'B', 'C');
    
    +---------------------------+
    | FIELD('A', 'A', 'B', 'C') |
    +---------------------------+
    |                         1 |
    +---------------------------+

这里,'A', 'B', 'C' 组成了一个列表,而 'A' 位于第 1 位, 因此返回了 1

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

    SELECT FIELD('D', 'A', 'B', 'C');
    
    +---------------------------+
    | FIELD('D', 'A', 'B', 'C') |
    +---------------------------+
    |                         0 |
    +---------------------------+
  • 如果要查找的值为 NULLFIELD() 函数返回 0

    SELECT FIELD(NULL, 'A', 'B', NULL);
    
    +-----------------------------+
    | FIELD(NULL, 'A', 'B', NULL) |
    +-----------------------------+
    |                           0 |
    +-----------------------------+

使用 FIELD() 排序

某些情况下,你需要一个表中的数据按照有限的状态值进行排序,此时可以使用 FIELD() 函数。比如在一个电影表 film 中,电影的等级字段 rating 的值使用了 'G', 'PG', 'PG-13', 'R', 'NC-17' 列表中的值,如果您想按照列表中元素的顺序进行升序排序,请使用下面的语句:

SELECT *
FROM film
ORDER BY FIELD(rating, 'G', 'PG', 'PG-13', 'R', 'NC-17');

关于此案例的详细用法请移步到 MySQL ORDER BY 教程。

FIELD()CASE...WHEN 语句

FIELD() 函数的功能可以使用 CASE...WHEN 实现,比如我们回到上面的语句:

SELECT FIELD('A', 'A', 'B', 'C') a_index;

可以改写为:

SELECT CASE 'A'
        WHEN 'A' THEN 1
        WHEN 'B' THEN 2
        WHEN 'C' THEN 3
       END a_index;

毫无疑问, FIELD() 函数是精简的,不易出错,并且更容易修改。

特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。