MySQL(函数)

文章目录

  • 1 日期函数
  • 2 字符串函数
  • 3 数学函数
  • 4 其它函数

1 日期函数

  • 日期类内置函数表:
函数名称描述
current date0当前日期
current time()当前时间
current timestamp)当前时间戳
date(datetime)返回datetime参数的日期部分
date add(date, interval d_value_type)在date中添加日期或时间interval后的数值单位可以是: year minute second day
date sub(date, interval d_value_type)在date中减去日期或时间interval后的数值单位可以是: year minute second day
datediff(datel, date2)两个日期的差,单位是天
now()当前日期时间
  • 获取年月日:
mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2023-04-22     |
+----------------+
1 row in set (0.00 sec)
  • 获得时分秒:
mysql> select current_time();
+----------------+
| current_time() |
+----------------+
| 10:47:31       |
+----------------+
1 row in set (0.00 sec)

  • 获得时间戳:
mysql> select current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2023-04-22 10:47:48 |
+---------------------+
1 row in set (0.01 sec)

  • 获得时间戳中年月日:
mysql> select date(current_timestamp());
+---------------------------+
| date(current_timestamp()) |
+---------------------------+
| 2023-04-22                |
+---------------------------+
1 row in set (0.00 sec)

  • 在日期的基础上加时间:
mysql> select date_add('2023-4-22', interval 10 day);
+----------------------------------------+
| date_add('2023-4-22', interval 10 day) |
+----------------------------------------+
| 2023-05-02                             |
+----------------------------------------+
1 row in set (0.01 sec)
  • 在日期的基础上加减:
mysql> select date_sub('2023-5-2', interval 10 day);
+---------------------------------------+
| date_sub('2023-5-2', interval 10 day) |
+---------------------------------------+
| 2023-04-22                            |
+---------------------------------------+
1 row in set (0.01 sec)

  • 计算两个日期之间相差多少天:
mysql> select datediff('2023-5-2', '2023-4-22') day;
+------+
| day  |
+------+
|   10 |
+------+
1 row in set (0.02 sec)

  • 当前日期时间:
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2023-04-22 13:22:10 |
+---------------------+
1 row in set (0.01 sec)

案例:

  • 留言板内容
mysql> select *from msg;
+----+-----------+---------------------+
| id(留言排序) | conten(留言内容)    | sedtime(留言时间)             |
+----+-----------+---------------------+
|  1 | 你好      | 2023-04-22 13:29:55 |
|  2 | 我不好    | 2023-04-22 13:29:55 |
|  3 | 哈哈哈    | 2023-04-22 13:29:55 |
+----+-----------+---------------------+
3 rows in set (0.01 sec)
  • 显示所有留言信息,发布日期只显示日期,不用显示时间
mysql> select conten, date(sedtime) from msg;
+-----------+---------------+
| conten    | date(sedtime) |
+-----------+---------------+
| 你好      | 2023-04-22    |
| 我不好    | 2023-04-22    |
| 哈哈哈    | 2023-04-22    |
+-----------+---------------+
3 rows in set (0.00 sec)
  • 请查询在10分钟内发布的帖子
mysql> select * from msg where date_add(sedtime, interval 10 minute) > now();
+----+-----------+---------------------+
| id | conten    | sedtime             |
+----+-----------+---------------------+
|  1 | 你好      | 2023-04-22 13:29:55 |
|  2 | 我不好    | 2023-04-22 13:29:55 |
|  3 | 哈哈哈    | 2023-04-22 13:29:55 |
+----+-----------+---------------------+
3 rows in set (0.00 sec)

2 字符串函数

函数名称描述
charset(str)返回字符串字符集
concat(string2 [,])连接字符串
instr(string,substring)返回substring在string中出现的位置,没有返回0
ucase(string2)转换成大写
lcase(string2)转换成小写
left(string2, length)从string2中的左边起length个字符
right(string2, length)从string2中的右边起length个字符
length(string)string的长度
replace(str, search str, replace_str)在str中用replace_str替换search_str
strcmp(stringl, string2)逐字符比较两字符串大小
substring(str, position [,length])从str的postion开始,取length个字符
ltrim(string) rtrim(string) trim(string)去除前空格、去除后空格、去除前空格和后空格

案例:
相关内容已经准备好了

  • 链接:https://gitee.com/ding-xushengyun/linux__cpp/blob/master/scott_data.sql
    准备工作,创建一个雇员信息表(来自oracle 9i的经典测试表)

    • emp员工表
    • dept部门表
    • salgrade工资等级表
  • 获取emp表的ename列的字符集

mysql> select charset(ename) '雇员姓名类型' from emp;
+--------------------+
| 雇员姓名类型       |
+--------------------+
| utf8               |
| utf8               |
| utf8               |
| utf8               |
| utf8               |
| utf8               |
| utf8               |
| utf8               |
| utf8               |
| utf8               |
| utf8               |
| utf8               |
| utf8               |
| utf8               |
+--------------------+
14 rows in set (0.00 sec)
  • 显示emp表中每位雇员工资情况。
mysql> select concat(`ename`, '先生/女士, 你所在的职位是', `job`, ', 每月薪资为', `sal`, '$') '公司工.情况'from `emp`;
+-----------------------------------------------------------------------------+
| 公司工资情况                                                                |
+-----------------------------------------------------------------------------+
| SMITH先生/女士, 你所在的职位是CLERK, 每月薪资为800.00$                      |
| ALLEN先生/女士, 你所在的职位是SALESMAN, 每月薪资为1600.00$                  |
| WARD先生/女士, 你所在的职位是SALESMAN, 每月薪资为1250.00$                   |
| JONES先生/女士, 你所在的职位是MANAGER, 每月薪资为2975.00$                   |
| MARTIN先生/女士, 你所在的职位是SALESMAN, 每月薪资为1250.00$                 |
| BLAKE先生/女士, 你所在的职位是MANAGER, 每月薪资为2850.00$                   |
| CLARK先生/女士, 你所在的职位是MANAGER, 每月薪资为2450.00$                   |
| SCOTT先生/女士, 你所在的职位是ANALYST, 每月薪资为3000.00$                   |
| KING先生/女士, 你所在的职位是PRESIDENT, 每月薪资为5000.00$                  |
| TURNER先生/女士, 你所在的职位是SALESMAN, 每月薪资为1500.00$                 |
| ADAMS先生/女士, 你所在的职位是CLERK, 每月薪资为1100.00$                     |
| JAMES先生/女士, 你所在的职位是CLERK, 每月薪资为950.00$                      |
| FORD先生/女士, 你所在的职位是ANALYST, 每月薪资为3000.00$                    |
| MILLER先生/女士, 你所在的职位是CLERK, 每月薪资为1300.00$                    |
+-----------------------------------------------------------------------------+
14 rows in set (0.02 sec)

  • instr函数使用
mysql> select instr('bca', 'c') pos;
+-----+
| pos |
+-----+
|   2 |
+-----+
1 row in set (0.00 sec)

mysql> select instr('bca', 'ca') pos;
+-----+
| pos |
+-----+
|   2 |
+-----+
1 row in set (0.00 sec)

mysql> select instr('bca', 'ac') pos;
+-----+
| pos |
+-----+
|   0 |
+-----+
1 row in set (0.00 sec)

  • 大小写转换
mysql> select ucase('a');
+------------+
| ucase('a') |
+------------+
| A          |
+------------+
1 row in set (0.00 sec)

mysql> select lcase('A');
+------------+
| lcase('A') |
+------------+
| a          |
+------------+
1 row in set (0.00 sec)

  • 左右字符取出
mysql> select left('cab', 2);
+----------------+
| left('cab', 2) |
+----------------+
| ca             |
+----------------+
1 row in set (0.00 sec)

mysql> select left('cab', 0);
+----------------+
| left('cab', 0) |
+----------------+
|                |
+----------------+
1 row in set (0.00 sec)

mysql> select right('cab', 0);
+-----------------+
| right('cab', 0) |
+-----------------+
|                 |
+-----------------+
1 row in set (0.00 sec)

mysql> select right('cab', 1);
+-----------------+
| right('cab', 1) |
+-----------------+
| b               |
+-----------------+
1 row in set (0.00 sec)

  • 字符串长度
mysql> select length('abc');
+---------------+
| length('abc') |
+---------------+
|             3 |
+---------------+
1 row in set (0.00 sec)

mysql> select length('哈哈哈');
+---------------------+
| length('哈哈哈')    |
+---------------------+
|                   9 |
+---------------------+
1 row in set (0.00 sec)

  • 将emp表中所有名字中有S的替换成’上海’
mysql> select replace(`ename`, 'S', '上海') newename, ename from `emp`;
+------------+--------+
| newename   | ename  |
+------------+--------+
| 上海MITH   | SMITH  |
| ALLEN      | ALLEN  |
| WARD       | WARD   |
| JONE上海   | JONES  |
| MARTIN     | MARTIN |
| BLAKE      | BLAKE  |
| CLARK      | CLARK  |
| 上海COTT   | SCOTT  |
| KING       | KING   |
| TURNER     | TURNER |
| ADAM上海   | ADAMS  |
| JAME上海   | JAMES  |
| FORD       | FORD   |
| MILLER     | MILLER |
+------------+--------+

  • 截取emp表中ename字段的第二个到第三个字符
mysql> select substring(`ename`, 2, 2) newename, `ename` from `emp`;
+----------+--------+
| newename | ename  |
+----------+--------+
| MI       | SMITH  |
| LL       | ALLEN  |
| AR       | WARD   |
| ON       | JONES  |
| AR       | MARTIN |
| LA       | BLAKE  |
| LA       | CLARK  |
| CO       | SCOTT  |
| IN       | KING   |
| UR       | TURNER |
| DA       | ADAMS  |
| AM       | JAMES  |
| OR       | FORD   |
| IL       | MILLER |
+----------+--------+
14 rows in set (0.01 sec)

  • 以首字母小写的方式显示所有员工的姓名
mysql> select concat(lcase(substring(`ename`, 1, 1)), substring(`ename`, 2)) newename, `ename` from `emp`
`;
+----------+--------+
| newename | ename  |
+----------+--------+
| sMITH    | SMITH  |
| aLLEN    | ALLEN  |
| wARD     | WARD   |
| jONES    | JONES  |
| mARTIN   | MARTIN |
| bLAKE    | BLAKE  |
| cLARK    | CLARK  |
| sCOTT    | SCOTT  |
| kING     | KING   |
| tURNER   | TURNER |
| aDAMS    | ADAMS  |
| jAMES    | JAMES  |
| fORD     | FORD   |
| mILLER   | MILLER |
+----------+--------+
14 rows in set (0.00 sec

3 数学函数

函数名称描述
abs(number)绝对值函数
bin(decimal number)十进制转换二进制
hex(decimalNumber)转换成十六进制
conv(number,from base,to base)进制转换
ceiling(number)向上去整
floor(number)向下去整
format(number,decimal places)格式化,保留小数位数
rand()返回随机浮点数,范围[0.0,1.0)
mod (numberdenominator)取模,求余

案例:

  • 绝对值函数
mysql> select abs(-2);
+---------+
| abs(-2) |
+---------+
|       2 |
+---------+
1 row in set (0.00 sec)

  • 十进制转换二进制
mysql> select bin(23);
+---------+
| bin(23) |
+---------+
| 10111   |
+---------+
1 row in set (0.00 sec)
  • 转换成十六进制
mysql> select hex(23);
+---------+
| hex(23) |
+---------+
| 17      |
+---------+
1 row in set (0.00 sec)

  • 进制转换
mysql> select conv(23, 10, 2);
+-----------------+
| conv(23, 10, 2) |
+-----------------+
| 10111           |
+-----------------+
1 row in set (0.00 sec)

mysql> select conv(10111, 2, 10);
+--------------------+
| conv(10111, 2, 10) |
+--------------------+
| 23                 |
+--------------------+
1 row in set (0.00 sec)
  • 向上去整
mysql> select ceiling(23.03);
+----------------+
| ceiling(23.03) |
+----------------+
|             24 |
+----------------+
1 row in set (0.00 sec)
  • 向下去整
mysql> select floor(23.99);
+--------------+
| floor(23.99) |
+--------------+
|           23 |
+--------------+
1 row in set (0.00 sec)

  • 格式化,保留小数位数
mysql> select format(3.1415, 2);
+-------------------+
| format(3.1415, 2) |
+-------------------+
| 3.14              |
+-------------------+
1 row in set (0.00 sec)

mysql> select format(3.1415, 3);
+-------------------+
| format(3.1415, 3) |
+-------------------+
| 3.142             |
+-------------------+
1 row in set (0.00 sec
  • 返回随机浮点数,范围[0.0,1.0)
mysql> select rand();
+--------------------+
| rand()             |
+--------------------+
| 0.8106659993628654 |
+--------------------+
1 row in set (0.00 sec)


  • 取模,求余
mysql> select mod(10, 7);
+------------+
| mod(10, 7) |
+------------+
|          3 |
+------------+
1 row in set (0.00 sec)

4 其它函数

  • user() 查询当前用户
mysql> select user();
+--------+
| user() |
+--------+
| root@  |
+--------+
1 row in set (0.00 sec)
  • md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
mysql> select md5(123);
+----------------------------------+
| md5(123)                         |
+----------------------------------+
| 202cb962ac59075b964b07152d234b70 |
+----------------------------------+
1 row in set (0.00 sec)

mysql> select md5(122);
+----------------------------------+
| md5(122)                         |
+----------------------------------+
| a0a080f42e6f13b3a2df133f073095dd |
+----------------------------------+
1 row in set (0.00 sec)
  • database()显示当前正在使用的数据库
mysql> select database();
+------------+
| database() |
+------------+
| scott      |
+------------+
1 row in set (0.00 sec)

  • password()函数,MySQL数据库使用该函数对用户加密
mysql> select password('root');
+-------------------------------------------+
| password('root')                          |
+-------------------------------------------+
| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-------------------------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> select password('sssssssssssssss');
+-------------------------------------------+
| password('sssssssssssssss')               |
+-------------------------------------------+
| *43B2A837F64B9DE6A4C2F25F43BCAC10FC45E38B |
+-------------------------------------------+
1 row in set, 1 warning (0.00 sec)

  • ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值
mysql> select ifnull(null, 1);
+-----------------+
| ifnull(null, 1) |
+-----------------+
|               1 |
+-----------------+
1 row in set (0.00 sec)

mysql> select ifnull(2, 1);
+--------------+
| ifnull(2, 1) |
+--------------+
|            2 |
+--------------+
1 row in set (0.00 sec)


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Go语言基础----Go语言简介

【原文链接】Go语言基础----Go语言简介 一、Go语言简介 Go语言,又称Golang,是Google公司的Robert Griesemer,Rob Pike 及 Ken Thompson开发的一种静态强类型、编译型的语言。Go语言语法和C语言接近,但是功能上内存安全&#xff…

一文弄懂Jupyter的配置与使用(呕心沥血版)

Jupyter 是一个基于 Web 的交互式计算平台,使用户能够创建和共享文档,这些文档包含实时代码、方程式、可视化图表和解释文字。Jupyter 在数据分析领域被广泛应用,它提供了一个直观、交互式的操作界面,使得用户能够更容易地探索数据…

【WinForm】Android手机群控工具-桌面程序开发实现

如何将手下多个Android手机统一管理起来呢,这里是用通过终端输入adb命令来实现控制多个手机的,具体怎么做,接下来给讲一讲。 使用adb工具包 首先,需要准备一套工具,以下是adb工具套件,是在Android SDK开发…

5天学会Linux C高级

day1 用C语言的理论知识点去推断结果 需求&#xff1a;让面试官知道你懂这个内容 一、C语言补充内容 【1】结构体补充内容&#xff1a; 1&#xff09;结构体.等法 结构体.等法代码 #include <stdio.h> struct student { int num; float score; char name[32…

Rust之泛型、特性和生命期(一):基本概念

开发环境 Windows 10Rust 1.69.0 VS Code 1.77.3 项目工程 这里继续沿用上次工程rust-demo 泛型、特性和生命期 每种编程语言都有有效处理概念重复的工具。在Rust中&#xff0c;一个这样的工具就是泛型&#xff1a;具体类型或其他属性的抽象替身。我们可以表达泛型的行为或…

【世界读书日】2023年通信好书推荐

今天是世界读书日&#xff08;4月23日&#xff09;。按照老规矩&#xff0c;小编给大家推荐一些通信类的优秀书籍。 过去一年&#xff0c;通信行业的关注热点&#xff0c;主要是&#xff1a;5G-Advanced&#xff08;5.5G&#xff09;、算力网络、东数西算、6G、卫星互联网、智…

如何正确高效地学习android开发?

每一个能成为行业大佬的人&#xff0c;一定有自己独特的方法… 之所以能成为大佬&#xff0c;是因为他们会有自己独特的见解&#xff0c;在一次次的尝试中不断否定&#xff0c;然后一次次的确定&#xff0c;一个程序员想要精益求精&#xff0c;必须要有高效的学习方法和良好的…

历史上的今天大事件查询工具推荐 - 历史上的今天 API

引言 历史上的今天&#xff0c;总会有一些特别的事件发生&#xff0c;这些事件对人类的发展产生了深远的影响。想要了解这些事件&#xff0c;往往需要花费大量的时间和精力去查阅历史资料。但现在&#xff0c;有了历史上的今天 API&#xff0c;一切变得方便了许多。 如果你对…

3年外包终上岸,我只能说这类公司能不去就不去····

我大学学的是计算机专业&#xff0c;毕业的时候&#xff0c;对于找工作比较迷茫&#xff0c;也不知道当时怎么想的&#xff0c;一头就扎进了一家外包公司&#xff0c;一干就是3年。现在终于跳槽到了互联网公司了&#xff0c;我想说的是&#xff0c;但凡有点机会&#xff0c;千万…

SAP KANBAN 从入门到放弃系列之调拨模式

之前已经有三篇文章写了后台配置相关的介绍&#xff0c;这里不赘述。详见&#xff1a; PP-KANBAN-看板概述 SAP KANBAN 从入门到放弃系列之生产补货模式 SAP KANBAN 从入门到放弃系列之采购补货模式 第一步&#xff1a;补货策略-转库。不同的补充策略的控制类型有不同的作用…

6.3 收敛性与稳定性

6.3.1 收敛性 数值计算方法的收敛性是指&#xff0c;当取步长趋近于零时&#xff0c;数值解趋近于精确解的速度。一般来说&#xff0c;数值计算方法的收敛性是判断其优劣的重要指标之一。 数值计算方法的收敛性可以通过数学分析来研究&#xff0c;一般需要对数值解和精确解之…

淘宝天猫数据分析:2023年健康养生三大品类数据分析

随着人们健康意识的不断增强&#xff0c;越来越多的年轻人都开始加入养生大军的队伍中&#xff0c;我国的健康养生产业也迎来了发展机遇。 在天猫平台上&#xff0c;养生茶、养生壶和滋补养生原料是养生市场的几大重点类目&#xff0c;接下来&#xff0c;结合鲸参谋电商数据分析…

【论文笔记】VideoGPT: Video Generation using VQ-VAE and Transformers

论文标题&#xff1a;VideoGPT: Video Generation using VQ-VAE and Transformers 论文代码&#xff1a;https://wilson1yan. github.io/videogpt/index.html. 论文链接&#xff1a;https://arxiv.org/abs/2104.10157 发表时间&#xff1a; 2021年9月 Abstract 作者提出了…

Java 之 String、StringBuffer与StringBuilder 区别

String String 是被 final 修饰的类&#xff0c;不能被继承&#xff1b;String实现了 Serializable 和Comparable接口&#xff0c;表示String支持序列化和可以比较大小&#xff1b;String底层是通过char类型的数据实现的&#xff0c;并且被final修饰&#xff0c;所以字符串的值…

Discourse Google Analytics 3 的升级提示

根据 Google 官方的消息&#xff1a; Google Analytics&#xff08;分析&#xff09;4 是我们的新一代效果衡量解决方案&#xff0c;即将取代 Universal Analytics。自 2023 年 7 月 1 日起&#xff0c;标准 Universal Analytics 媒体资源将停止处理新的命中数据。如果您仍在使…

camunda流程引擎receive task节点用途

Camunda的Receive Task用于在流程中等待外部系统或服务发送消息。当接收到消息后&#xff0c;Receive Task将流程继续执行。Receive Task通常用于与Send Task配合使用&#xff0c;以便流程可以在发送和接收消息之间进行交互。 Receive Task可以用于以下场景&#xff1a; 1、等…

abaqus和ansys做仿真哪个更好

当你要模拟仿真一个机械模型时&#xff0c;通常会听到ABAQUS或ANSYS&#xff0c;最常见的问题是哪个更好&#xff1f;无论是工程设计师还是初学者&#xff0c;通常会问这个问题或类似的问题。在本文中介绍了 Abaqus 与 Ansys&#xff0c;您将了解这些问题的答案。 1-ANSYS&…

C++类与对象—上

本期我们来学习类与对象 目录 面向过程和面向对象初步认识 类的引入 访问限定符 类的定义 封装 类的作用域 类的实例化 this指针 C语言和C实现Stack的对比 面向过程和面向对象初步认识 C 语言是 面向过程 的&#xff0c; 关注 的是 过程 &#xff0c;分析出求解问题的…

ajax写法和json的知识点

1. JQuery方式来实现AJAX 1.1 $.ajax()方式来实现AJAX 语法&#xff1a;$.ajax(url,[settings]);但是我们一般这么写$.ajax({键值对});。 $.ajax()来实现ajax的案例&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"…

第二十六章 案例TodoList 之实现Footer组件

本小节&#xff0c;我们来实现最后的Footer组件的功能&#xff0c;它的功能主要有&#xff1a; 记录已完成和全部的任务列表数量点击【复选框】可以实现全选和全不选点击【删除已完成】按钮&#xff0c;可以将选中的任务项删除掉 实现已完成和全部的任务列表数量 步骤1&#…
最新文章