写点什么

【YashanDB 知识库】MySQL field 函数的改写方法

作者:YashanDB
  • 2025-02-11
    广东
  • 本文字数:757 字

    阅读完需:约 2 分钟

本文内容来自 YashanDB 官网,原文内容请见

https://www.yashandb.com/newsinfo/7664893.html?templateId=1718516

概述

MySQL field 函数常用于自定义排序,改写到 YashanDB 一般用 decode 或者 case 进行改写。

 

详情

MySQL 的 field 用法

MySQL 的 field 函数一般用于对 SQL 中查询结果集进行指定顺序排序,例如以下查询对于 c2 列,如果 c2 的值等于'plane','train','bicycle'其中之一,则以 'plane','train','bicycle'的顺序编号 1,2,3 进行排序,否则顺序编号为 0,排在最前。请看以下示例:

mysql> select c1, c2 from t1 order by field (c2, 'plane','train','bicycle');
+----+---------+
| c1 | c2 |
+----+---------+
| 1 | car |
| 5 | rocket |
| 2 | plane |
| 4 | train |
| 3 | bicycle |
+----+---------+
5 rows in set (0.00 sec)
复制代码

表和数据

create table t1(c1 int primary key, c2 varchar(100));
insert into t1 values(1,'car'),(2,'plane'),(3,'bicycle'),(4,'train'),(5,'rocket');
commit;
复制代码

YashanDB 的改写方法

可以用 decode 或者 case 进行改写

SQL> select c1, c2 from t1 order by decode (c2, 'plane', 1, 'train', 2, 'bicycle', 3, 0);

C1 C2
----------- ----------------------------------------------------------------
1 car
5 rocket
2 plane
4 train
3 bicycle

5 rows fetched.

SQL> select c1, c2 from t1 order by case c2 when 'plane' then 1 when 'train' then 2 when 'bicycle' then 3 else 0 end;

C1 C2
----------- ----------------------------------------------------------------
1 car
5 rocket
2 plane
4 train
3 bicycle

5 rows fetched.
复制代码


发布于: 刚刚阅读数: 4
用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
【YashanDB知识库】MySQL field 函数的改写方法_数据库_YashanDB_InfoQ写作社区