MySQL(十一):MySQL语法-函数

news2024/12/28 5:18:41

原始数据

select * from employees where emp_no = '10002';
select * from salaries where emp_no = '10002';
+--------+------------+------------+-----------+--------+------------+
| emp_no | birth_date | first_name | last_name | gender | hire_date  |
+--------+------------+------------+-----------+--------+------------+
|  10002 | 1964-06-02 | Bezalel    | Simmel    | F      | 1985-11-21 |
+--------+------------+------------+-----------+--------+------------+
1 row in set (0.00 sec)

+--------+--------+------------+------------+
| emp_no | salary | from_date  | to_date    |
+--------+--------+------------+------------+
|  10002 |  65828 | 1996-08-03 | 1997-08-03 |
|  10002 |  65909 | 1997-08-03 | 1998-08-03 |
|  10002 |  67534 | 1998-08-03 | 1999-08-03 |
|  10002 |  69366 | 1999-08-03 | 2000-08-02 |
|  10002 |  71963 | 2000-08-02 | 2001-08-02 |
|  10002 |  72527 | 2001-08-02 | 9999-01-01 |
+--------+--------+------------+------------+
6 rows in set (0.00 sec)

函数

在这里插入图片描述

select
    now()                                              as '查询时间',

    a.emp_no                                           as '员工编号',

    concat(b.last_name, ' ', b.first_name)             as '姓名',
    concat_ws(':', b.last_name, b.first_name)          as '姓名(字符串拼接)',

    replace(b.last_name, 'Simmel', 'Simmel-齐美尔')     as '姓(替换)',
    ucase(b.last_name)                                 as '姓(大写)',
    upper(b.last_name)                                 as '姓(大写)',
    mid(b.last_name, 1, 1)                             as '姓(首字母-从索引1开始计数)',

    replace(b.first_name, 'Bezalel', '贝扎雷-Bezalel')  as '名(替换)',
    lcase(b.first_name)                                as '名(小写)',
    lower(b.first_name)                                as '名(小写)',
    length(b.first_name)                               as '名(长度)',
    field('Bezalel', b.last_name, b.first_name)        as 'Bezalel(名的索引)',

    trim('     做个人吧     ')                          as '去除前后空格',

    b.gender                                           as '性别',

    repeat(b.gender, 10)                               as '复制10分性别',

    if(b.gender = 'F', '女', '男')                      as '性别(三元运算)',

    case
        when b.gender = 'F' then '女'
        when b.gender = 'M' then '男'
        else '变态' end
                                                       as '性别(三元运算)',

    isnull(b.gender)                                   as '是否为变态(isnull)',
    isnull(null)                                       as '是否为null(isnull)',

    ifnull(b.gender, '变态')                            as '是否为变态(ifnull)',
    ifnull(null, 'null')                               as '是否为null(ifnull)',

    coalesce(b.gender, '变态')                          as '是否为变态(coalesce)',
    coalesce(null, 'null')                             as '是否为null(coalesce)',

    b.birth_date                                       as '出生日期',
    b.hire_date                                        as '雇佣日期',

    left(b.birth_date, 4)                              as '年(从左侧截取4个字符)',
    substring(b.birth_date, 6, 2)                      as '月(从左侧6处开始截取2个字符)',
    substr(b.birth_date, 6, 2)                         as '月(从左侧6处开始截取2个字符)',
    right(b.birth_date, 2)                             as '日(从右侧截取2个字符)',

    substring_index('www.baidu.com', '.', -2)          as '以.分割字符串逆向截取两个元素',
    locate('.', 'baidu.com.cn')                        as '.第一次出现的位置',

    group_concat(a.salary separator ';')               as '薪资',
    count(a.salary)                                    as '数量',

    avg(a.salary)                                      as '平均值',
    round(avg(a.salary))                               as '四舍五入(平均值)',
    format(avg(a.salary), 0)                           as '平均值(格式化)',
    format(avg(a.salary), 10)                          as '平均值(格式化)',
    sum(a.salary)                                      as '总和',
    max(a.salary)                                      as '最大值',
    min(a.salary)                                      as '最小值',

    sqrt(sum(a.salary))                                as '总和平方根',

    rand() * 100                                       as '随机数(0到1 * 100)',

    floor(1.2345)                                      as '返回不大于参数的最大整数',
    floor(-1.2345)                                     as '返回不大于参数的最大整数',

    ceiling(1.2345)                                    as '返回不小于参数的最小整数',
    ceiling(-1.2345)                                   as '返回不小于参数的最小整数',

    abs(-2)                                            as '绝对值',

    5 div 2                                            as '5/2',

    mod(3, 2)                                          as '3%2',
    mod(2, 3)                                          as '2%3',

    pow(2, 3)                                          as '2^3',
    power(2, 3)                                        as '2^3',

    pi()                                               as '圆周率',

    cos(pi())                                          as 'cos(余弦)',
    sin(pi())                                          as 'sin(正弦)',
    tan(pi())                                          as 'tan(正切)',

    acos(1)                                            as 'acos(反余弦)',
    asin(1)                                            as 'asin(反正弦)',
    atan(1)                                            as 'atan(反正切)',

    least(2, 1, 4, 0, 1)                               as '返回最小值',
    greatest(2, 1, 4, 0, 1)                            as '返回最大值',

    degrees(pi())                                      as '从弧度转换为角度',
    radians(180)                                       as '从角度转换为弧度',

    truncate(0.123456789, 5)                           as '保留有效数字(不四舍五入)',

    sign(-100)                                         as '参数符号',
    sign(0)                                            as '参数符号',
    sign(100)                                          as '参数符号'
from
    (select * from salaries where emp_no = '10002') as a
inner join
    employees as b
on
    a.emp_no = b.emp_no
group by
    a.emp_no;

日期函数

在这里插入图片描述

select date_add('2023-01-01', interval 7 day)                              as '增加7天',
       adddate('2023-01-01', interval 7 hour)                              as '增加7小时',
       adddate('2023-01-01', interval 7 minute)                            as '增加7分钟',
       adddate('2023-01-01', interval '07-01' year_month)                  as '增加7年1月',

       date_sub('2023-01-20', interval 7 day)                              as '减去7天',
       subdate('2023-01-20', interval 7 hour)                              as '减去7小时',

       addtime('00:00:00', '01:00:00')                                     as '增加1小时',
       subtime('00:00:00', '07:07:07')                                     as '减去7小时7分7秒',

       convert_tz('2023-01-01 01:01:01', '+8:00', '+10:00')                as '从+8:00时区修改为+9:00时区',

       curdate()                                                           as '返回当前日期',
       current_date()                                                      as '返回当前日期',
       current_date                                                        as '返回当前日期',

       curtime()                                                           as '返回当前时间',
       current_time()                                                      as '返回当前时间',
       current_time                                                        as '返回当前时间',

       now()                                                               as '返回当前日期时间',
       localtime()                                                         as '返回当前日期时间',
       localtime                                                           as '返回当前日期时间',
       localtimestamp()                                                    as '返回当前日期时间',
       localtimestamp                                                      as '返回当前日期时间',
       current_timestamp()                                                 as '返回当前日期时间',
       current_timestamp                                                   as '返回当前日期时间',

       date_format(now(), '%Y(4位年) - %y(2位年)')                         as '年',

       date(now())                                                         as '从 date 或者 datetime 表达式中提取出日期部分',

       datediff('2023-01-01 10:10:10', '1997-02-11 07:01:01')              as '日期相减得出天',

       day('2020-01-31')                                                   as '返回某天是当月的第几天(1-31)',
       dayofmonth('2020-02-31')                                            as '返回某天是当月的第几天(1-31)',

       dayname('2020-01-31')                                               as '返回某天在用星期中的名称',

       dayofweek('2020-01-31')                                             as '返回某天是该星期的第几天',

       dayofyear('2020-02-21')                                             as '返回某天是一年中的第几天(1-366)',

       extract(year_month from now())                                      as '提取日期中的某一部分',

       from_days(366)                                                      as '将天数转换为日期',

       from_unixtime(1580436610)                                           as '将某个 UNIX 时间戳格式化为日期',

       unix_timestamp('2020-01-31 10:10:10')                               as '将某个日期格式化为 UNIX 时间戳',

       last_day('2020-01-10 10:10:10')                                     as '返回参数日期所在月份的最后一天',

       makedate(2023, 100)                                                 as '利用年份和某天在该年所处的天数来创建日期',

       maketime(112, 50, 50)                                               as '根据小时,分钟和秒值创建并返回时间值',

       year(now())                                                         as '由参数返回年',
       month(now())                                                        as '由参数返回月份',
       monthname(now())                                                    as '由参数返回月份名称',
       yearweek(now())                                                     as '由参数返回年周数',
       weekofyear(now())                                                   as '由参数返回周数',
       weekday(now()) + 1                                                  as '返回星期几',
       week(now())                                                         as '由参数返回周数',
       time(now())                                                         as '时间',
       hour(now())                                                         as '由参数返回小时',
       minute(now())                                                       as '由参数返回分钟',
       second(now())                                                       as '由参数返回秒',
       microsecond(now())                                                  as '由参数返回毫秒',

       to_days(now())                                                      as '将日期参数转换为天数',

       utc_date()                                                          as '返回当前 UTC 日期',
       utc_time()                                                          as '返回当前 UTC 时间',
       utc_timestamp()                                                     as '返回当前 UTC 日期和时间',

       quarter(now())                                                      as '返回日期参数所在的季度',

       sec_to_time(100000)                                                 as '将秒数转换为 ''HH:MM:SS'' 格式',


       str_to_date('2020-01-10 10:20:30', '%Y-%m-%d %H:%i:%s')             as '将字符串转换为日期数据',

       sysdate()                                                           as '返回函数执行的时的时刻',

       time_format('20201010 101010', '%Y-%m-%d %H:%i:%s')                 as '格式化时间',

       time_to_sec('10:10:10')                                             as '将时间参数转换为秒数',

       timediff('2020-01-01 10:10:10', '2023-01-01 20:20:20')              as '将两个时间相减返回时分秒',

       period_add(201808, 2)                                               as '参数年月加上参数月',
       period_diff(201808, 201810)                                         as '返回两个年月格式的日期数据之间的月份数',

       timestampadd(day, 3, now())                                         as '3天以后的日期时间',
       timestampdiff(second, '2023-07-21 10:10:10', '2023-07-20 01:01:01') as '两个日期时间相减',

       timestamp('2020-01-01')                                             as '返回参数的日期时间',

       timestamp(now(), '3:00:00')                                        as '返回参数日期时间加上时间';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/767018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

duilib消息产生以及响应机制

1、duilib消息产生处理原理 win32消息产生机制 消息产生。系统将消息排列到其应该排放的线程消息队列中。线程中的消息循环调用GetMessage(or PeekMessage)获取消息。传送消息TranslateMessage and DispatchMessage to 窗口过程(Windows pr…

JavaWeb课程设计项目实战(01)——项目综述

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 项目背景 本项目适合JavaWeb新手作为入门学习的练手案例,主要技术包括: TomcatJSPELJSTLMySQL 该项目是一个学生信息管理系统,主要功能…

300-700题红题第四题和第五题

题目链接:332. 重新安排行程 题目链接:335. 路径交叉 332. 重新安排行程 是写过的详细的在回溯。只能说再写一遍还是磕磕绊绊,但好歹理解的比较快了。 主要就是理解一下回溯的backtrack的输出,不仅仅是可以输出路径的&#xff0…

竹云IDaaS | 全面融合AWS Cognito

AWS Cognito组件用户池User Pool国内暂未上线,身份云IDaaS可完全替代Cognito用户池,借助身份云进行用户身份验证并融合Coginto身份池Identity Pool,实现对AWS资源的无缝安全访问。 企业面临的挑战 AWS Cognito中国站暂未提供用户池User&…

Python_pymysql_与mysql交互

目录 基础功能 简单封装 源码等资料获取方法 基础功能 import pymysql from pymysql.cursors import DictCursor # 导入字典类型的游标对象# 连接数据库 db pymysql.connect(host192.168.3.109, # 数据库IP地址port3306, # 数据库端口号userroot, …

Qchart学习

目录 Qchart简介 QChartView 简介 QAbstractAxis 简介 QAbstractSeries 简介 Qchart Public Types Properties属性 Public Functions QAbstractSeries Public Types Properties Public Functions Signals信号 QAbstractAxis Properties Public Functions 主题设…

全面了解ESP-01SWiFi模块

ESP-01S是一款基于ESP8266芯片的WiFi模块,它提供了低成本、低功耗和高度集成的解决方案,适用于物联网和嵌入式应用。本文将介绍ESP-01S模块的功能和特点,并提供一个简单的WiFi控制示例。 目录 ESP-01S模块管脚功能: ESP-01S特点…

字符串列表分类求平均值

给定一字符串列表数据,按颜色分类计算价格平均值并写入列表。 (本笔记适合对python字符串和列表基本烂熟的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程…

【C++修炼之路】模板初阶

👑作者主页:安 度 因 🏠学习社区:StackFrame 📖专栏链接:C修炼之路 文章目录 一、泛型编程二、函数模板1、概念2、格式3、函数模板实例化① 隐式② 显式 4、特性 五、类模板六、模板使内置类型"升级&q…

无人驾驶中识别颜色并跟踪的优化(加入PID算法控制)

我们了解到无人驾驶是如何去识别颜色的,以及无人车能够跟随颜色目标的演示。回到现实中我们发现,无人车的速度控制是很关键的,这个涉及到安全问题,比如等待红绿灯时,该减速或加速超车等这样很常见的情形,在…

论文笔记--OpenPrompt: An Open-source Framework for Prompt-learning

论文笔记--OpenPrompt: An Open-source Framework for Prompt-learning 1. 文章简介2. 文章概括3 文章重点技术4. 文章亮点5. 原文传送门 1. 文章简介 标题:OpenPrompt: An Open-source Framework for Prompt-learning作者:Ning Ding, Shengding Hu, We…

基于Java+SpringBoot+vue前后端分离在线视频教育平台设计实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

Leecode316: 去除重复字母

下面这里使用有序map——TreeMap来实现Map接口,但是相对顺序是不能改变的!这样会使得后面的跑到前面去,所以有问题 最简单的思想肯定是暴力思想,就是从前往后寻找,一旦遇到存在的情况就. 重点在于明确两点&#xff1a…

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(基本语法 五)

Styles装饰器:定义组件重用样式 如果每个组件的样式都需要单独设置,在开发过程中会出现大量代码在进行重复样式设置,虽然可以复制粘贴,但为了代码简洁性和后续方便维护,我们推出了可以提炼公共样式进行复用的装饰器St…

【LLM】self-instruct 构建指令微调数据集

文章目录 一、self-instruct流程二、具体过程1. 指令生成2. 分类任务识别3. 实例生成4. 过滤和后处理 三、其他部分1. 验证数据质量2. GPT3SELF-INSTRUCT生成数据的词性分析3. Rouge-L指标 Reference 一、self-instruct流程 四部曲:指令生成;分类任务识别…

Oracle 的视图

Oracle 的视图 源数据: -- Create table create table STU_INFO (id NUMBER not null,name VARCHAR2(8),score NUMBER(4,1),class VARCHAR2(2) ) tablespace STUDENTpctfree 10initrans 1maxtrans 255storage(initial 64Knext 1Mminextents 1maxextents unlim…

最多变的混合模式-实色混合HardMix

最多变的混合模式-实色混合HardMix 之前写过一篇介绍27种图层混合模式的非常详细,如果你想完全了解底层的原理,这篇文章不会让你失望。 PS图层混合模式超详细解答-图层混合模式的原理 - 王先生的副业的文章 - 知乎 https://zhuanlan.zhihu.com/p/64396…

从小白到大神之路之学习运维第63天--------zabbix企业级监控(概述、单台服务器监控本身安装部署)

第三阶段基础 时 间:2023年7月18日 参加人:全班人员 内 容: zabbix企业级监控 目录 一、Zabbix概述 (一)Zabbix简介 (二)Zabbix运行条件: (三)Zab…

深入解析 YAML 配置文件:从语法到最佳实践

一、认识YAML YAML(YAML Aint Markup Language)是一种人类可读的数据序列化语言。它的设计目标是使数据在不同编程语言之间交换和共享变得简单。YAML采用了一种简洁、直观的语法,以易于阅读和编写的方式表示数据结构。YAML广泛应用于配置文件…

探索开源图片编辑工具:定制化编辑,激发想象

图片编辑是现代生活中广泛使用的技术,它不仅能够改善照片和图像的质量,还能创造出令人赞叹的视觉效果。随着开源文化的兴起,越来越多的开源工具涌现出来,为我们提供了实用且灵活的图片编辑功能。这些开源工具的出现为个人、设计师…