MariaDB FIELD() 函数使用指南
在 MariaDB 中, FIELD()
函数返回一个指定的值在给定的列表中的位置索引。
MariaDB FIELD()
语法
这里是 MariaDB FIELD()
函数的语法:
FIELD(value, v1[, v2, ..., vN])
参数说明
value
- 必须的。要在列表中查找的值。
v1[, v2, ..., vN]
- 必须的。被搜索的列表中的各个元素。
如果您未提供参数或提供了一个 1 个参数, MariaDB 将报告错误:ERROR 1582 (42000): Incorrect parameter count in the call to native function ‘FIELD’。
返回值
如果在列表中找到指定的值,FIELD()
函数返回对应的位置索引。FIELD()
函数返回的索引的值从 1
开始。
如果在列表中找不到指定的值,FIELD()
函数返回 0
。
如果要查找的值为 NULL
,FIELD()
函数返回 0
。
MariaDB FIELD()
示例
如果你需要知道 'A'
在列表 'A', 'B', 'C'
中的位置,可以使用如下语句:
SELECT FIELD('A', 'A', 'B', 'C');
输出:
+---------------------------+
| FIELD('A', 'A', 'B', 'C') |
+---------------------------+
| 1 |
+---------------------------+
这里,'A', 'B', 'C'
组成了一个列表,而 'A'
位于第 1 位, 因此返回了 1
。
MariaDB FIELD()
不区分大小写,如下:
SELECT FIELD('a', 'A', 'B', 'C');
输出:
+---------------------------+
| FIELD('a', 'A', 'B', 'C') |
+---------------------------+
| 1 |
+---------------------------+
MariaDB FIELD()
可以搜索数值的位置索引,如下:
SELECT FIELD(1, 2, 3, 1);
输出:
+-------------------+
| FIELD(1, 2, 3, 1) |
+-------------------+
| 3 |
+-------------------+
使用 FIELD()
排序
您可能需要根据某一个列表中的值的顺序进行排序,比如您需要根据颜色列表 Green, Red, Blue
进行排序,您可以使用 FIELD()
函数。
下面的语句模拟了您的需求:
SELECT *
FROM product
ORDER BY FIELD(color, 'Green', 'Red', 'Blue');
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()
函数是精简的,不易出错,并且更容易修改。
结论
在 MariaDB 中, FIELD()
函数返回一个指定的值在给定的列表中的位置索引。