【MySQL基础】常用函数

2023-11-15

单行函数

字符函数

LENGTH

定义:获取参数值的字节个数

格式: length(str)

实例:

select length('MySQL');	#5
select length('你好MySQL');   #11

备注: UTF-8编码下,一个汉字三个字节;GBK编码下,一个汉字两个字节。

CONCAT

定义: 拼接字符串

格式: concat(str1,str2…)

实例:

select concat('MySQL','123');  # MySQL123

UPPER

定义: 将字符串中的小写转换成大写

格式: upper(str)

实例:

select upper('MySQL');  # MYSQL

LOWER

定义: 将字符串中的大写转换成小写

格式: lower(str)

实例:

select upper('MySQL');  # mysql

SUBSTR/SUBSTRING

定义:截取字符串

格式:

  1. substr(str, pos)

  2. substr(str, pos, len)

实例:

select substr('Mysql123', 5);	# 123
select substr('Mysql123', 1, 5);	# Mysql

INSTR

定义: 返回子串第一次出现的索引,如果找不到返回0

格式: instr(str, substr)

实例:

select instr('aaaaaMySQL123MySQL' , 'MySQL');	# 6

TRIM

定义: 去除首尾指定字符,默认去除空格

格式: trim([remstr from] str)

实例:

select trim('	MySQL123 '); # MySQL123
select trim('aaa' from 'aaaaaMySQL123'); # aaMySQL123 

LPAD

定义: 用指定的字符实现左填充指定长度

格式: lpad(str, len, padstr)

实例:

select lpad('MySQL123', 10, 'a'); #aaMySQL123

RPAD

定义: 用指定的字符实现右填充指定长度

格式: rpad(str, len, padstr)

实例:

select rpad('MySQL123', 10, 'a'); #MySQL123aa

REPLACE

定义: 替换

格式: replace(str, from_str, to_str)

实例:

select replace('MySQL123', 'My', 'mY'); #mYSQL123

数学函数

ABS

定义: 绝对值

格式: abs(x)

实例:

select abs(-1); #1

ROUND

定义: 四舍五入

格式:

  1. round(x)
  2. round(x, d)

实例:

select round(1.234); # 1
select round(1.254, 1); # 1.3

CEIL

定义: 向上取整,返回> =到数字的最小整数值

格式: ceil(x)

实例:

select ceil(1.2);	#2
select ceil(-1.2);	#-1

FLOOR

定义: 向下取整,返回<=到数字的最大整数值

格式: floor(x)

实例:

select floor(1.2);	#1
select floor(-1.2);	#-2

TRUNCATE

定义: 将数字截断为指定的小数位数

格式: truncate(x, d)

实例:

select truncate('231.666', 1);	# 231.6
select truncate('231', 1);	# 231.0

MOD

定义: 取余

格式: mod(n, m)

实例:

select mod(10, 3);	#1
select mod(10, -3);	#1
select mod(-10, 3);	#-1
select mod(-10, -3);	#-1

备注: 结果可以套用公式 n-n/m*m 验证

POW

定义: 幂函数

格式: pow(x, y)

实例:

select pow(2,2); #4
select pow(4,1/2); #2

RAND

定义: 随机函数

格式: rand()

实例:

select rand(); #0.6328324355490808

日期函数

NOW/SYSDATE

定义: 返回当前日期和时间

格式: now()/sysdate()

实例:

select now(); # 2022-02-15 13:47:50

CURDATE/CURRENT_DATE

定义: 返回当前日期

格式:

  1. curdate()
  2. current_date()

实例:

select curdate(); # 2022-02-15
select current_date(); # 2022-02-15

CURTIME/CURRENT_TIME

定义: 返回当前时间

格式:

  1. curtime()
  2. current_time()

实例:

select curtime(); # 13:47:50
select current_time(); # 13:47:50

STR_TO_DATE

定义: 返回基于字符串和格式的日期

格式: str_to_date(str, format)

实例:

/*
%Y  四位的年份;  %y 2位的年份
%m 月份(01,02....11,12; %c 月份(1,2...11,12)
%d 日(01,02,...)
%H 小时(24小时制);   %h 小时(12小时制)
%i 分钟(00,01...59);
%s 秒(00,01...59);
*/
select str_to_date('2022-02-15 13:47:50','%Y-%m-%d %H:%i:%s'); # 2022-02-15 13:47:50

DATE_FORMAT

定义: 将日期转换成字符

格式: date_format(date, format)

实例:

/*
%Y  四位的年份;  %y 2位的年份
%m 月份(01,02....11,12; %c 月份(1,2...11,12)
%d 日(01,02,...)
%H 小时(24小时制);   %h 小时(12小时制)
%i 分钟(00,01...59);
%s 秒(00,01...59);
*/
select date_format(now(),'%Y-%m-%d %H:%i:%s'); # 2022-02-15 13:47:50

YEAR、MONTH、DAY、HOUR、MINUTE、SECOND

定义: 获取指定的部分,年、月、日、小时、分钟、秒

格式: year(date)、month(date)、day(date)、hour(date)、minute(date)、second(date)

实例:

select year(now()); # 2022
select year('2022-1-1'); # 2022
select month(now()); # 2

ADDDATE/DATE_ADD/DATE_SUB

定义: 将时间/日期间隔添加到日期,然后返回日期

格式:

  1. adddate(date, days)
  2. adddate(date, INTERVAL expr unit) /date_add(date, INTERVAL expr unit)/date_sub(date, INTERVAL expr unit)

实例:

select adddate('2022-02-15 13:47:50', 1);  #2022-02-16 13:47:50
select ADDDATE('2022-02-15 13:47:50', INTERVAL 2 year);  #2024-02-15 13:47:50

DATEDIFF

定义: 返回两个日期值之间的天数

格式: datediff(expr1, expr2)

实例:

select datediff("2022-02-15", "2022-02-01");  #14

YEARWEEK/WEEKOFYEAR/WEEK

定义: 返回给定日期的年和周数

格式:

  1. yearweek(date)/weekofyear(date)
  2. yearweek(date, mode)/week(date, mode)

实例:

select yearweek("2010-3-14");  # 201011
/*
mode
0 - 星期的第一天是星期日
1 - 一周的第一天是星期一,第一周是超过3天
2 - 星期的第一天是星期天
3 - 一周的第一天是星期一,第一周是超过3天
4 - 一周的第一天是星期日,第一周是超过3天
5 - 一周的第一天是星期一
6 - 周的第一天是星期日,第一周的时间超过3天
7 - 一周的第一天是星期一
*/
select yearweek("2010-3-14", 1);  # 201010

UNIX_TIMESTAMP

定义: 将日期(含时分秒)转换成UNIX时间戳的形式
格式:

  1. unix_timestamp()
  2. unix_timestamp(date)

实例:

select unix_timestamp(); #1651852800
select unix_timestamp(curtime());  #1651852800

FROM_UNIXTIME

定义: 将UNIX时间戳的时间转换为普通格式的时间
格式:

  1. from_unixtime(unix_timestamp)
  2. from_unixtime(unix_timestamp, format)

实例:

select from_unixtime(1651852800); #2022-05-07 00:00:00
select from_unixtime(1651852800,'%Y-%m-%d');  #2022-05-07

流程控制函数

IF

定义: 如果条件为TRUE则返回值,如果条件为FALSE则返回另一个值

格式: if(expr1, expr2, expr3)

实例:

select if(500<1000, 5, 10); # 5

CASE

格式:

  1. 语法和switch case相同

    case 要判断的字段或表达式

    when 常量1 then 要显示的值1或语句1

    when 常量2 then 要显示的值2或语句2

    else 要显示的值n或语句n

    end ;

  2. 语法和if else相同

    case

    when 条件1 then 要显示的值1或语句1

    when 条件2 then 要显示的值2或语句2

    else 要显示的值n或语句n

    end

实例:

select  case 5>4 
when  0 then  'result1'
when 1 then 'result2'  
else  'result3' end; # result2

select  case 
when 5>4 then  'result1'
when 5<6 then 'result2'  
else  'result3' end; # result1

其他函数

VERSION

定义: 返回MySQL数据库的当前版本

格式: version()

实例:

select version(); # 5.7.28

DATABASE

定义: 返回当前数据库的名称

格式: database()

实例:

select database(); # northwind

USER

定义: 返回当前的MySQL用户名和主机名

格式: user()

实例:

select user(); #demo@localhost

CAST/CONVERT

定义: 将值(任何类型)转换为指定的数据类型

格式: cast(expr as type)/convert(expr, type)

实例:

/*
type
DATE 日期格式:“YYYY-MM-DD”
DATETIME 日期和时间格式:“YYYY-MM-DD HH:MM:SS”
TIME 时间格式:“HH:MM:SS”
CHAR 固定长度的字符串
SIGNED 签名的64位整数
UNSIGNED 无符号的64位整数
BINARY 二进制字符串
*/
select cast("2017-08-29" as date); # 2017-08-29 

ISNULL

定义: 返回1或0,具体取决于表达式是否为NULL

格式: isnull(expr)

实例:

select isnull(null); #1 

IFNULL

定义: 如果表达式为NULL,则返回指定的值,否则返回表达式

格式: ifnull(expr1,expr2)

实例:

select ifnull(null, 'www'); #www
select ifnull('www', 'qqq'); #www

分组函数

用作统计,又称为聚合函数或统计函数或组函数,和分组函数一同查询的字段要求是group by后的字段

SUM

定义: 计算某列数值之和,忽略NULL值,只能用于数值型。

格式: sum([distinct] expr)

实例:

AVG

定义: 计算某列平均值,忽略NULL值,只能用于数值型。

格式: avg([distinct] expr)

实例:

MAX

定义: 计算某列的最大值,忽略NULL值。

格式: max([distinct] expr)

实例:

MIN

定义: 计算某列的最小值,忽略NULL值。

格式: min([distinct] expr)

实例:

COUNT

定义: 计算某列的最小值,忽略NULL值,一般使用count(*)用作统计行数。

效率:
​ MYISAM存储引擎下,count(*)的效率高

​ INNODB存储引擎下,count(*)和count(1)的效率差不多,比count(字段)要高些。

格式: min([distinct] expr)

实例:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【MySQL基础】常用函数 的相关文章

  • 主键默认可以为NULL吗?为什么这样描述呢?

    我有一张桌子 当我describe这是 mysql gt DESC my table Field Type Null Key Default Extra contact id int 11 NO PRI NULL auto incremen
  • 在 Android 中获取联系方式需要花费大量时间?

    您好 目前正在做一个与联系人相关的项目 我正在从联系人中获取详细信息 电子邮件 电话号码和联系人姓名 效果很好 但问题是获取联系方式需要很长时间 超过 1000 个联系人 包括从社交网站同步的联系人 这样我就放了一个Asynchronous
  • 性能:cakephp-mysql 中的 UUID 与自动递增

    我正在搜索 cakePHP 生成的 UUID 32 个字符长 是否比自动增量在性能上更快 插入和选择操作的比较 我应该使用 cakePHP 生成的 UUID 还是使用 MySQL 的简单自动增量生成的 UUID 这是我发现的一个案例研究 但
  • using 块会关闭数据库连接吗?

    using DbConnection conn new DbConnection do stuff with database 会不会using块调用conn Close 是的 它会 实施DbConnection Dispose calls
  • 连接所有 PostgreSQL 表并创建 Python 字典

    我需要加入allPostgreSQL 表并将它们转换为 Python 字典 数据库中有72张表 总列数大于1600 我编写了一个简单的 Python 脚本 该脚本连接多个表 但由于以下原因无法连接所有表内存错误 https gist git
  • 我不断收到此 mysql 错误代码 #1089

    CREATE TABLE movies movie movie id INT 3 NULL AUTO INCREMENT movie name VARCHAR 25 NULL movie embedded id VARCHAR 50 NUL
  • 从 SQL 数据库获取日期时间

    我的数据库表中有一个 DateTime 记录 我编写一个查询从数据库中获取它 string command2 select Last Modified from Company Data where Company Name Descrip
  • Magento - 无法重新索引产品价格 - 外键约束失败

    我最近刚刚将我的 magento 商店从 1 4 2 升级到 1 7 0 2 升级进行得很顺利 但是当我尝试在升级后重新索引数据时 产品价格失败了 我尝试过使用php shell indexer php reindexall来自 SSH 它
  • 在内连接中重用 mysql 子查询

    我正在尝试优化查询 试图避免重复用 指示的查询 复杂查询 使用两次 结果相同 原始查询 SELECT news FROM news INNER JOIN SELECT myposter FROM SELECT COMPLEX QUERY U
  • 无法将 CLOB 数据存储到 DB2 中的 CLOB 定义的列中

    我猜这是一个重复的问题 但尚未找到合适的解决方案 基本上 我试图通过以下方式将大一点的 XML 即 32000 个字符 插入到 CLOB 列中 DB2程序 插入失败并出现以下错误 看起来 DB2 正在将输入视为 String 而不是 CLO
  • Laravel Eloquent 预加载:加入同一个表两次

    我有一个users表和一个约会桌子 在约会表中 我有两个用户 ID customer id staff id 我想检索所有带有客户姓名和员工姓名的约会 users table id name appointments table id st
  • 在 SQL 中如何获得整数的最大值?

    我试图从 MySQL 数据库中找出整数 有符号或无符号 的最大值 有没有办法从数据库本身提取这些信息 是否有我可以使用的内置常量或函数 标准 SQL 或 MySQL 特定的 At http dev mysql com doc refman
  • PHP-MySQLi 连接随机失败并显示“无法分配请求的地址”

    大约两周以来 我一直在处理 LAMP 堆栈中最奇怪的问题之一 长话短说 与 MySQL 服务器的随机连接失败并显示错误消息 Warning mysqli real connect HY000 2002 Cannot assign reque
  • 使用表白名单选项更新 Debezium MySQL 连接器

    我正在使用 Debezium 0 7 5 MySQL 连接器 并且我试图了解如果我想使用以下选项更新此配置 最好的方法是什么table whitelist 假设我创建了一个连接器 如下所示 curl i X POST H Accept ap
  • 转义用户数据,无需魔法引号

    我正在研究如何在来自外部世界的数据被用于应用程序控制 存储 逻辑等之前正确地对其进行转义 显然 随着 magic quote 指令在 php 5 3 0 中很快被弃用 并在 php6 中被删除 对于任何想要升级并进入新语言功能 同时维护遗留
  • 如何修复“未知变量'sql-mode = ANSI'”?

    使用 MySQL 5 5 27 在 my cnf 中我有 mysql sql mode ANSI 启动 mysql 控制台后我得到 unknown variable sql mode TRADITIONAL MySQL 文档服务器 SQL
  • 具有“日期之间”的 CakePHP 模型

    我有一个很大的数据集 超过十亿行 数据在数据库中按日期分区 因此 我的查询工具必须在每个查询上指定一个 SQL Between 子句 否则它将必须扫描每个分区 而且 它会在返回之前超时 所以 我的问题是 分区的数据库中的字段是日期 使用 C
  • 错误 1305 (42000):保存点...不存在

    我的 MYSQL 数据库中有这个 SQL 存储过程为空 所以我猜没有隐式提交 DROP PROCEDURE IF EXISTS doOrder DELIMITER CREATE PROCEDURE doOrder IN orderUUID
  • mysql 查询选择当月的所有行?

    我有一个名为 startdate 的日期时间类型的列 我必须获取当前月份的开始日期和结束日期之间的所有行 即从 1 11 2014 到 30 11 2014 select from your table where year curdate
  • 如何统计订单总价?

    我有这些表 Orders id status user id address id 1 await 1 1 products id name price quantity 1 test1 100 5 2 test2 50 5 order p

随机推荐

  • 为什么win11连接wifi频繁掉线?

    如果网络波动比较大的话 就会导致电脑使用过程中不顺畅 网页打开速度都会很缓慢 就有win11用户跟小编反映自己的电脑连接WiFi后总是掉线 非常烦人 这该怎么办 下面就来看看小编为大家整理的几个解决办法 希望可以解决这个问题 方法一 1 首
  • 搭建Ambari Hadoop系统实验

    1 基础环境准备 1 登录到实训系统 检查实训环境 确保有一个CentOS 7系统的虚拟机用来搭建ambari集群 非桌面版虚拟机 首先修改主机名 点击实训页面 虚拟机信息 标签进入非桌面版虚拟机 在 后输入hostnamectl set
  • windows重启nginx服务

    在nginx安装目录下 安全有序停止 nginx exe s quit 启动 start nginx
  • 考研OR工作----计算机操作系统简答题及疑难知识点总结(第三章 处理机调度与死锁)

    上一篇文章总结了一些关于进程的知识点 这章的目的也是根据 计算机操作系统 第四版 汤子瀛 的书来总结一下进程调度和死锁的相关知识点 这一章其实和上一章紧密相连 所以如果没有基础或基础较差 对一些概念还有些模糊 的朋友们先去看上一章的简答题总
  • linux常见面试题

    1 连接linux服务器工具有哪些 SecureCRSecureFX 最好 RealVNC SSHClient putty 比较 SecureCRSecureFX 可以文件传输 可使用命令行 设置字符编码 可开启多个 SSH Client
  • Java拾遗

    这里写自定义目录标题 Hibernate Error Unable to locate persister Caused by java lang NoClassDefFoundError javax sql rowset serial S
  • Nginx超时配置、限流

    目录 一 说明 二 超时配置 三 限流 限制访问频率 限制并发连接数 四 问题记录 五 参考文章 Author Jinwei EditTimes 2020年11月25日17 31 06 一 说明 Nginx 处理的每个请求均有相应的超时设置
  • spring注解及扩展

    1 spring配置注解 spring建议通过注解配置 替代原xml配置方式 使用配置类替代xml配置的优势大体 1 xml配置维护容易出错而且不易检查 java配置类基于java语法检查 对于java程序员更友好 易于维护 2 注解配置
  • NISEDIT如何发布,Qt如何发布文章?难道还有人不会(超详细教学,跟着走,不会你怪我)

    一 自动发布 直接运行即可 不过多阐述 二 手动发布 文件清单 ExamSys exe account txt exam txt Qt5Core dll Qt5Gui dll Qt5Widgets dll libstdc 6 dll lib
  • LeetCode中函数题中“多出来的参数“---returnsize

    转载 关于returnSize 第一次在leetcode上瞎逛就遇到了就遇到了它 int twoSum int nums int numsSize int target int returnSize 1 这个代码的实现并不是什么难解的方法
  • JVM 由哪些部分组成?

    JVM 由哪些部分组成 解析 这是对 JVM 体系结构的考察 答 JVM 的结构基本上由 4 部分组成 类加载器 在 JVM 启动时或者类运行时将需要的 class 加载到 JVM 中 执行引擎 执行引擎的任务是负责执行 class 文件中
  • Zynq7000硬件开发之芯片供电电源功耗(电流)评估

    案头语 单板硬件的主控芯片集成度越来越高 多核处理器越来越多 一块单板可能只需要1块芯片就能满足整体需求 一方面减少设计复杂度 另一面节省PCB面积成本 能同时掌握硬件原理设计以及PCB Layout设计逐渐成为主流 本系列文章同时包含有两
  • ES6详解 快速上手!

    一 Es6 1 1 ES6的概述 ECMAScript的快速发展 编程语言JavaScript是ECMAScript的实现和扩展 ECMAScript是由ECMA 一个类似W3C的标准组织 参与进行标准化的语法规范 ECMAScript定义
  • 【python量化】用python搭建一个股票舆情分析系统

    写在前面 下面的这篇文章将手把手教大家搭建一个简单的股票舆情分析系统 其中将先通过金融界网站爬取指定股票在一段时间的新闻 然后通过百度情感分析接口 用于评估指定股票的正面和反面新闻的占比 以此确定该股票是处于利好还是利空的状态 1 环境准备
  • C++(Liunx) 使用cut截 取出Ubuntu用户的家目录,要求:不能使用“:“作为分割.

    使用cut截 取出Ubuntu用户的家目录 要求 不能使用 作为分割
  • 43.MQ—RabbitMQ

    目录 一 MQ RabbitMQ 1 同步调用与异步调用 1 1 同步调用 1 2 异步调用 2 MQ之间的区别 3 RabbitMQ学习 3 1 docker下载rabbitmq容器 并启动 3 2 RabbitMQ中的几个概念 3 3
  • Python遥感开发之分段读取和保存遥感数据

    Python遥感开发之分段读取和保存遥感数据 1 分段读取数据 2 实现分批读取数据以及进行计算 3 实现分批保存成TIF文件 所有完整代码 4 分段TIF整合到一个TIF 5 生成一个空白TIF 每个像元值为0的TIF 前言 当遇到批量读
  • Supervisord进程管理工具的安装使用

    先来介绍 supervisord Supervisor 是一个进程监控程序 满足的需求是 我现在有一个进程需要每时每刻不断的跑 但是这个进程又有可能由于各种原因有可能中断 当进程中断的时候我希望能自动重新启动它 此时 我就需要使用到了 Su
  • dataloader的使用

    dataloader 构建可迭代的数据装载器 我们在训练的时候 每一个for循环 每一次iteration 就是从DataLoader中获取一个batch size大小的数据的 dataloader官网 torch utils data P
  • 【MySQL基础】常用函数

    文章目录 单行函数 字符函数 LENGTH CONCAT UPPER LOWER SUBSTR SUBSTRING INSTR TRIM LPAD RPAD REPLACE 数学函数 ABS ROUND CEIL FLOOR TRUNCAT