百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

资深DBA整理MySQL基础知识五:SQL大神经常用到的函数

wptr33 2025-03-01 15:43 14 浏览

SQL中常用到的函数

一.if函数:

第一种格式:if(expr1,expr2,expr3)

含义:如果表达式expr1值为true(expr1 <> 0 and expr1 <> null),则返回值expr2,否则返回值 expr3

如果表达式1为true(值不为0,不会null),返回表达式2的值,否则返回表达式3的值。

例如:select if (5 > 3, 2 * 3, 3 * 3)

注意:MySQL中用1来表示true,0表示false。 select 5 > 3 #MySQL中,1与true是同义词,0与false是同义词。 select 1 = true, 0 = false

第二种格式:ifnull(expr1,expr2)

含义:如果 expr1不为 null,则 ifnull() 的返回值为expr1 ; 否则其返回值为expr2 。

如果表达式1不为null,返回表达式1的值,否则返回表达式2的值。

例如:select ifnull(null, 200);

第三种格式:nullif(expr1,expr2)

含义:如果 expr1= expr2 ,则返回值为null,否则返回值为expr1 。

如果表达式1与表达式2相等,则返回null,否则返回表达式1。

例如:select nullif(5, 5);

第四种格式:isnull(expr1)

含义:如果expr1值为null,则返回值true,否则返回值false。 判断参数是否为null,如果为null,返回true(1),否则返回false(0)。
select isnull(1000), isnull(null)

二.case 具有两种形式

1.case第一种形式,类似于Js中的switch-case

格式:case A when B then when C then D ELSE E end

含义:当 A= B时 为 C 当 A = C 时为 E。

例如:SELECT bookname, price,case price WHEN 30 then '便宜' WHEN 60 then '贵' ELSE "太贵" end FROM book;

2.case第二种形式,类似于Js中的ifelseifSELECT

格式:case when AD then E else F ;

例如:select bookname, price,case WHEN price<30 then '便宜' WHEN price>30 and price<50 then '贵' ELSE "太贵" end FROM book;

三.数值函数:

1.返回绝对值:abs()

select abs(-100)----->100,

2.返回大于等于参数的最小整数值(向上取整):ceil()

select ceil(3.2), ceiling(3.2) ------>4,

3.返回小于等于参数的最大整数值(向下取整) floor()

select floor(3.2) --->3

4.返回余数 :mod()

select mod(5, 2)----->1

5.返回0-1之间的随机小数 包括区间: rand()

select rand();

6.返回最接近的整数值(四舍五入):round()

select round(2.5), round(-2.5) ---->3

注意:round还可以指定第二个参数,表示精确的小数位数;如果第二个参数是负值,从小数点左侧算起。

select round(2.333, 2), round(2.335, 2) ----->2.33

7.返回参数的平方根(开方):sqrt()

select sqrt(100)

8.TRUNCATE(X,D) 返回数字X被截断为D位小数的结果

例如:SELECT TRUNCATE(1.223,1), TRUNCATE(1.999,1), TRUNCATE(1.999,2);

TRUNCATE(1.223,1)------> 1.2

TRUNCATE(1.999,1)------>1.9

TRUNCATE(-1.999,2) ------->-1.99

四.字符串操作函数:

1.返回字符串的长度,以字节为单位:length()

select length('abcdef') ----->6

2.返回字符串的长度,以字符为单位:char_length()

select char_length('abcdefg中')------>8

3.将字符串进行连接,返回连接后的结果:concat()

select concat('abc', 'def', 'efg', 'wrewr')----->abcdefefgwrewr

4.将字符串进行连接,使用指定的分隔符(第一个参数)分隔(可变参数):concat_ws()

select concat_ws('-', 'abc', 'def', 'hij')----->abc-def-hij

5.在第1个参数中,从第2个参数指定的位置起,第3个参数指定 长度的内容,(字符串),使用第4个参数进行替换:insert()

select insert('abcdefg', 2, 3, '1234567')------>ab1234567efg;

未完待续......

相关推荐

MySQL进阶五之自动读写分离mysql-proxy

自动读写分离目前,大量现网用户的业务场景中存在读多写少、业务负载无法预测等情况,在有大量读请求的应用场景下,单个实例可能无法承受读取压力,甚至会对业务产生影响。为了实现读取能力的弹性扩展,分担数据库压...

Postgres vs MySQL_vs2022连接mysql数据库

...

3分钟短文 | Laravel SQL筛选两个日期之间的记录,怎么写?

引言今天说一个细分的需求,在模型中,或者使用laravel提供的EloquentORM功能,构造查询语句时,返回位于两个指定的日期之间的条目。应该怎么写?本文通过几个例子,为大家梳理一下。学习时...

一文由浅入深带你完全掌握MySQL的锁机制原理与应用

本文将跟大家聊聊InnoDB的锁。本文比较长,包括一条SQL是如何加锁的,一些加锁规则、如何分析和解决死锁问题等内容,建议耐心读完,肯定对大家有帮助的。为什么需要加锁呢?...

验证Mysql中联合索引的最左匹配原则

后端面试中一定是必问mysql的,在以往的面试中好几个面试官都反馈我Mysql基础不行,今天来着重复习一下自己的弱点知识。在Mysql调优中索引优化又是非常重要的方法,不管公司的大小只要后端项目中用到...

MySQL索引解析(联合索引/最左前缀/覆盖索引/索引下推)

目录1.索引基础...

你会看 MySQL 的执行计划(EXPLAIN)吗?

SQL执行太慢怎么办?我们通常会使用EXPLAIN命令来查看SQL的执行计划,然后根据执行计划找出问题所在并进行优化。用法简介...

MySQL 从入门到精通(四)之索引结构

索引概述索引(index),是帮助MySQL高效获取数据的数据结构(有序),在数据之外,数据库系统还维护者满足特定查询算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构...

mysql总结——面试中最常问到的知识点

mysql作为开源数据库中的榜一大哥,一直是面试官们考察的重中之重。今天,我们来总结一下mysql的知识点,供大家复习参照,看完这些知识点,再加上一些边角细节,基本上能够应付大多mysql相关面试了(...

mysql总结——面试中最常问到的知识点(2)

首先我们回顾一下上篇内容,主要复习了索引,事务,锁,以及SQL优化的工具。本篇文章接着写后面的内容。性能优化索引优化,SQL中索引的相关优化主要有以下几个方面:最好是全匹配。如果是联合索引的话,遵循最...

MySQL基础全知全解!超详细无废话!轻松上手~

本期内容提醒:全篇2300+字,篇幅较长,可搭配饭菜一同“食”用,全篇无废话(除了这句),干货满满,可收藏供后期反复观看。注:MySQL中语法不区分大小写,本篇中...

深入剖析 MySQL 中的锁机制原理_mysql 锁详解

在互联网软件开发领域,MySQL作为一款广泛应用的关系型数据库管理系统,其锁机制在保障数据一致性和实现并发控制方面扮演着举足轻重的角色。对于互联网软件开发人员而言,深入理解MySQL的锁机制原理...

Java 与 MySQL 性能优化:MySQL分区表设计与性能优化全解析

引言在数据库管理领域,随着数据量的不断增长,如何高效地管理和操作数据成为了一个关键问题。MySQL分区表作为一种有效的数据管理技术,能够将大型表划分为多个更小、更易管理的分区,从而提升数据库的性能和可...

MySQL基础篇:DQL数据查询操作_mysql 查

一、基础查询DQL基础查询语法SELECT字段列表FROM表名列表WHERE条件列表GROUPBY分组字段列表HAVING分组后条件列表ORDERBY排序字段列表LIMIT...

MySql:索引的基本使用_mysql索引的使用和原理

一、索引基础概念1.什么是索引?索引是数据库表的特殊数据结构(通常是B+树),用于...