MySQL中的函数

2023-05-16

1.单行函数和多行函数(聚合函数、分组函数):

只对一行进行变换 每行返回一个结果;

(1).单行函数:

a.数值函数:

基本函数:

  • ABS(x)---绝对值;
  • SIGN(x)---0:0,整数:1,负数:-1;
  • CELL(x)、CELLING(x)---天花板函数,取离该值最近的,大于该值的整数;
  • FLOOR(x)---地板函数,取离该值最近的,小于该值的整数;
  • LEAST(...),GREATEST(...)
  • RAND()--->0-1、RAND(x)--->x是因子,如果两个随机数的因子是相同的那么得到的随机数也是相同的。---随机数;
  • ROUND(x)--->舍去小数位;ROUND(x,y)--->保留y位小数,如果y是负数,就去看整数位的保留值,将第几位舍或入。---四舍五入;
  • TRUNCATE(x,y)--->舍去y位后的数。---截断;
  • SQRT---开方,开根号;
  • AVG();

三角函数:

其中参数都是弧度---弧度和角度的转换--->RADIANS(x)---角度转换为弧度;DEGREES(x)---弧度转换为角度

  • SIN(x)
  • COS(x)
  • TAN(x)
  • ACOS(x)
  • ASIN(x)
  • ATAN(x)
  • ATAN2(m,n)
  • COT(x)

指数和对数:

  • POW、POWER--->指数;
  • EXP(x)--->e为底,x为指数;
  • LN(x)、LOG(x);

进制的转换:

  • BIN()---二进制;
  • HEX()---十六进制;

b.字符串函数:

  • ASCII:只看第一位;
  • CHAR_LENGH:字符长度;LENGH:字节长度;
  • CONCAT:连接字符(段)、CONCAT_WS(...)参数里的第一个字符串是用来连接后面的字符串的;
  • INSERT(原字符串,首位索引(这里的索引是从1开始,分页的时候从0开始),偏移量,插入的字符串)
  • REPLACE(原字符串,需要替换的字符串部分,替换进去的字符串部分)
  • LEFT(字符串,取左边的x个)、RIGHT(字符串,取右边的x个)
  • LPAD(str,补成x位,用'...'这个字符串来在左侧补充)---右对齐、RPAD(str,补成x位,用'...'这个字符串来在右侧补充)---左对齐
  • LTRIM、RTRIM:去除字符串左、右侧的空格。TRIM(s):去除字符串左侧和右侧的空格;TRIM('s1' FROM 's'):去除字符串s中首尾的s1;
  • REPLACE(str,n):重复n次;
  • LOCATE:找到首次出现的位置;
  • ELT:返回指定位置的字符串;
  • NULLIF(str1,str2)---如果str1=str2,就返回NULL,如果不相等,就返回str1;

c.日期和时间函数:

获取日期和时间:

  • CURDATE()、CURRENT_DATE()、CURRENT_TIME()、CURTIME()NOW()、UTC_DATE、UTC_TIME;

日期和时间戳的转换:

  • 转换成毫秒;
  • UNIX_TIMESTAMP();

获取月份、星期、星期数、天数:

  • YEAR()、MONTH()、DAY()、HOUR()、MINUTE()、SECOND()、DATENAME()

日期的格式化和解析:

  • DATE_FORMAT(date,fmt)---fmt一般是'%Y-%M-%D'TIME_FORMAT(date,fmt)---fmt一般是'%H:%m:%s'
  • 解析:STR_TO_DATE(str)

d.流程控制函数:

  • IF(value,value1,value2)---如果value为true则返回value1,否则返回value2;

  • IFNULL(value1,value2)---如果value1为true则返回value1,否则返回value2;

  • CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 条件2...(ELSE)...END(...)(别名)

  • CASE (expr)---表达式  WHEN 常量1 THEN 常量1 WHEN 常量2 THEN 常量2...

  • 查询自带循环;


e.加密与解密:

  • PASSWORD(str):将str加密,返回一串随机字符串;加密结果不可逆---MySQL8.0不推荐使用
  • MD5(str):加密结果不可逆
  • SHA(str):更安全,加密结果不可逆
  • ENCODE()、DECODE()---8.0中不可用,加密解密;

f.信息函数:

  • VERSION()、CONNECTION_ID()、USER()、DATABASE()...

g.其他函数:

  • FORMAT()---四舍五入保留到小数点后n为位; 
  • CONV(value,m,n):进制转换,从m到n;

(2).聚合函数:

输入的是一组数据的集合,输出的是单个值;不可以嵌套;

  • AVG()
  • SUM()
  • MAX()
  • MIN()
  • COUT()
  • GROUP BY:根据某个条件进行分组,如果有多个条件则是某个条件中另一个情况的所有都返回出来;其中非主函数的字段必须出现在GROUP BY中,反之不一定;写在FROM、WHERE后面,LIMIT后面;
  • GROUP BY中使用WITH ROLLUP--把所有组的数据执行组函数-->不可以参与排序
  • HAVING:也是用来过滤数据的(WHERE),但是一般和GROUP BY相关;
  • 如果过滤条件中出现了组(聚合)函数,那么就不能用WHERE,得用HAVING,并且放在GROUP BY后面;当过滤条件时没有聚合函数时,则此过滤条件可以申明在WHERE和HAVING里,但是尽量写在WHERE里---效率更高。
  • HAVING和WHILE的对比:(1).HAVING适用范围更广;(2).WHERE效率更快,先筛选后连接,HAVING先连接后筛选;
  • SQL语句的执行顺序:FROM---WHERE---JOIN...ON---GROUP BY---HAVING---SELECT---ORDER BY---LIMIT;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL中的函数 的相关文章

  • 同一配置文件上的两个不同提供程序

    我在用着实体框架 6 1 0 I have 2 家提供者 MysqlClient 和 SQLServerCE 我需要创建2个不同的DBContext 这迫使我创造2个配置类因为mysql有一些不同的东西 但是当我初始化应用程序时 Datab
  • 一次从多个表中删除行

    我正在尝试将 2 个查询合并为一个这样的查询 result db gt query DELETE FROM menu WHERE name new or die db gt error result db gt query DELETE F
  • POINT 列上的 MySQL INSERT/UPDATE

    我正在尝试用我国家的地理位置填充我的数据库 我的一张表有 4 个字段 ID PK 纬度 经度和地理点 EDIT SCDBs Punto Geografico SET lat 18 469692 SET lon 63 93212 SET g
  • 显示标准化数据

    跟进问题 添加 2 个不同表的总和 https stackoverflow com questions 39717541 adding sum from 2 different tables 我创建了3个表 members videos v
  • 如何优化这个MySQL慢(非常慢)查询?

    我有一个 2 GB 的 mysql 表 包含 500k 行 我在没有负载的系统上运行以下查询 select from mytable where name in n1 n2 n3 n4 bunch more order by salary
  • MySQL 和 Hibernate 之间的主键自增由谁负责?

    MySQL CREATE TABLE role id role INT 11 unsigned NOT NULL AUTO INCREMENT PRIMARY KEY id role AUTO INCREMENT 1 休眠 Entity p
  • MySql 5.7 ORDER BY 子句不在 GROUP BY 子句中并且包含非聚合列

    我试图在不禁用 my ini 中的 only full group by 的情况下弄清楚 这是我的查询 SELECT p title COUNT t qty AS total FROM payments t LEFT JOIN produc
  • MySQL 8 用逗号分割字符串并将其转换为JSON ARRAY

    我有以下字符串 a b c d 我想将它转换成一个 json 数组 像这样 a b c d MySQL 8 有什么函数可以实现这个功能吗 Try SELECT CAST CONCAT REPLACE a b c d AS JSON See
  • 即使没有结果也返回一个值

    我有这种简单的查询 它返回给定 id 的非空整数字段 SELECT field1 FROM table WHERE id 123 LIMIT 1 问题是如果找不到 id 结果集就是空的 我需要查询始终返回一个值 即使没有结果 我有这个东西工
  • 不带 GROUP BY 的聚合查询

    这个查询似乎在我的旧机器上完美运行 但是 在我的 MySQL 5 7 14 和 PHP 5 6 25 的新机器上 它会抛出错误 致命错误 未捕获异常 PDOException 并带有消息 SQLSTATE 42000 语法错误或访问冲突 1
  • 使用Perl/DBI/MySQL/InnoDB查找外键信息

    我想以编程方式查找 MySQL 数据库中特定 InnoDB 表的外键 我正在使用 Perl 我偶然发现 dbh gt foreign key info 我刚刚尝试使用它 但似乎有点错误 它不会返回 ON DELETE 和 ON UPDATE
  • 慢速自动增量重置

    我有很多表 由于某些原因 我需要在应用程序启动时调整这些表的自动增量值 我尝试这样做 mysql gt select max id from item max id 97972232 1 row in set 0 05 sec mysql
  • 非常大的字段会对 MySQL 数据库产生负面影响吗?

    我目前正在使用 Django 构建一个网站 并希望托管用户生物样式页面 该页面可能长达几 KB 这些字段不一定需要搜索 但在查找用户名时确实需要提供 将这些数据存储在数据库中会产生负面影响吗 如果我使用带有数据库链接的静态文本文件 我的服务
  • 将庞大数据库从亚马逊RDS导出到本地mysql

    我在 Amazon RDS 上有一个 mysql 数据库 大约 600GB 数据 我需要将其移回本地专用服务器 但我不知道从哪里开始 每次我尝试初始化 sqldump 时它都会冻结 有没有办法将其移至 S3 甚至可能在开始下载之前将其分成更
  • 获取带有计数的不同记录

    我有一张桌子personid and msg列 personid msg 1 msg1 2 msg2 2 msg3 3 msg4 1 msg2 我想得到总计msg对于每个personid 我正在尝试这个查询 select distinct
  • MYSQL - 使用逗号分隔字符串作为变量输入的存储过程

    我希望有人能够提供帮助 我已经创建了我的第一个存储过程 没什么花哨的 但是我遇到了问题 我想给它一个字符串输入 例如 1 2 3 4 5 然后它执行一个简单的操作SELECT FROM TABLE WHERE EAN IN VAR 所以存储
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • 从Django中具有外键关系的两个表中检索数据? [复制]

    这个问题在这里已经有答案了 This is my models py file from django db import models class Author models Model first name models CharFie
  • mysql排序和排名语句

    我需要一些 mysql 语句的帮助 我的表 1 有 7 列 表 2 有 8 列 额外的列名为排名 我的语句应该是这样的 从表 1 中选择全部 然后按 用户数 排序 将其插入表 2 中并排名开始 1 2 3 等 table 1 usernam

随机推荐

  • Linux系统ftp服务器搭建

    1 安装ftp yum y install vsftpd 2 启动ftp服务 xff1a systemctl restart vsftpd 查看网络端口使用 xff1a netstat tunlp 可以看到vsftp对应使用的21端口 3
  • UltraVNC 使用方法详细说明

    介绍 VNC Virtual Network Console 是虚拟网络控制台的缩写 UltraVNC 是客户端 服务器软件 xff0c 允许你经由 TCP IP 连线 xff08 也就是主机都在同一网络环境下 xff09 xff0c 控制
  • IE浏览器设置兼容性

    在访问一些老旧的网站时 xff0c 会出现图像等画面显示不全或不显示的现象 xff0c 可尝试设置一下浏览器的兼容性视图 打开IE浏览器 xff0c 点击 设置 钮 选择兼容性视图设置 2 在添加网站窗口 xff0c 填入对应网站网址 xf
  • windows10 更改系统默认程序

    更改系统默认打开程序 点击wind10系统左下角windows图标 2 点击 设置 3 在设置界面选择 应用 4 在侧边栏选择 默认应用 5 在默认应用中可修改系统应用的默认打开软件
  • 打印机维护

    打印机使用过程中大致会有两种问题 一 硬件问题 xff1a 等耗材更换 xff1a 墨水 xff0c 碳粉 xff0c 硒鼓 xff0c 墨盒 1 喷墨打印机 xff1a 主要就是字车 搓纸组件和横向移动就是x轴 xff1b 2 针式打印机
  • I2C总线和触摸屏驱动移植实战-linux驱动开发第9部分-朱有鹏-专题视频课程

    I2C总线和触摸屏驱动移植实战 linux驱动开发第9部分 9306人已学习 课程介绍 本课程是linux驱动开发的第9个课程 xff0c 主要内容是linux的I2C子系统以及电容触摸屏驱动的移植 学习本课程的核心点在于I2C子系统 xf
  • 【C语言和C++】实现线程池

    目录 一 线程池总体结构 二 线程数组 三 添加任务队列 四 管理者线程 五 销毁 六 其他子函数 七 测试代码 附录 xff08 C和C 43 43 代码 xff09 最后有全部代码 xff0c 急需可以跳过 线程池是一种概念 xff0c
  • 【C语言】算法学习·哈希算法全解

    目录 C中的哈希 它能做什么 xff1f 快吗 xff1f 是图书馆吗 xff1f C C 43 43 和平台 BSD 许可 下载 uthash 获得帮助 贡献 包括的额外内容 历史 可以直接从此处开始阅读 哈希结构 钥匙 哈希句柄 关于记
  • 小知识·PD充电协议

    目录 PD充电器硬件结构 pd充电协议是什么 pd协议快充什么意思 PD快充协议优势 USB PD快速充电通信原理 PD充电器硬件结构 典型的手机充电器的硬件结构 xff08 以基于Dialog方案的高通QC2 0快充协议为例 xff09
  • 小知识·typec耳机原理

    目录 数字耳机和模拟耳机 手机中模拟和数字耳机的差异 typec耳机介绍 数字耳机和模拟耳机 模拟耳机即我们的常见的3 5mm接口的耳机 xff0c 包括左右声道 xff0c 地或者mic xff0c 如左图 数字耳机 右图 包含一个usb
  • 小知识·adb安装和使用方法

    目录 一 adb是什么 xff1f 二 adb有什么作用 三 如何启用adb调试 四 如何判断设备连接正常 五 如何下载安装adb 1 adb下载地址 xff1a 2 按装步骤 六 adb命令大全 1 查看设备 2 Adb应用管理 3 安装
  • 【C++】搭建HTTP服务器

    目录 项目介绍 网络协议栈介绍 协议分层 数据的封装与分用 HTTP相关知识介绍 HTTP的特点 URL格式 URI URL URN HTTP的协议格式 HTTP的请求方法 HTTP的状态码 HTTP常见的Header CGI机制介绍 CG
  • Linux命令·netstat

    netstat命令用于显示与IP TCP UDP和ICMP协议相关的统计数据 xff0c 一般用于检验本机各端口的网络连接情况 netstat是在内核中访问网络及相关信息的程序 xff0c 它能提供TCP连接 xff0c TCP和UDP监听
  • Linux命令·ss

    ss是Socket Statistics的缩写 顾名思义 xff0c ss命令可以用来获取socket统计信息 xff0c 它可以显示和netstat类似的内容 但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息 xff0c
  • LeetCode·每日一题·2437. 有效时间的数目·模拟

    作者 xff1a 小迅 链接 xff1a https leetcode cn problems number of valid clock times solutions 2262448 mo ni zhu shi chao ji xian
  • john破解用户密码和防破解

    目录 一 系统弱口令检测 二 防止暴力破解 一 系统弱口令检测 Joth the Ripper xff0c 简称JR 一款开源的密码分析工具 xff0c 支持字典式的暴力破解 通过对shadow文件的口令分析 xff0c 可以检测密码强度
  • 块设备驱动介绍-linux驱动开发第10部分-朱有鹏-专题视频课程

    块设备驱动介绍 linux驱动开发第10部分 3265人已学习 课程介绍 本课程是linux驱动开发的第10个课程 xff0c 主要内容是linux的块设备驱动的介绍 xff0c 首先详细讲了块设备驱动和字符设备驱动的核心差异 xff0c
  • Linux各个系统版本及区别(Ubuntu,CentOS..)

    一 概览 Linux的版本号分为两部分 xff1a 内核版本和发行版本 内核版本 xff1a 不包含外围程序GNU程序库和工具 xff0c 命令行shell xff0c 图形界面的X Window系统和相应的桌面环境等 发行版本 xff1a
  • keil5编译报错问题

    keil5一开始编译文件总是报错 error 3092 anonymous unions are only supported in gnu mode or when enabled with pragma anon unions 错误 x
  • MySQL中的函数

    1 单行函数和多行函数 xff08 聚合函数 分组函数 xff09 xff1a 只对一行进行变换 每行返回一个结果 xff1b 1 单行函数 xff1a a 数值函数 xff1a 基本函数 xff1a ABS x 绝对值 SIGN x 0