首页 > 其他分享 >006 学习笔记--内置函数 | 字符串函数 + 数值函数 + 日期函数 + 流程控制函数(if ifnull case)

006 学习笔记--内置函数 | 字符串函数 + 数值函数 + 日期函数 + 流程控制函数(if ifnull case)

时间:2023-07-07 14:34:41浏览次数:34  
标签:case return 函数 -- select 字符串 SELECT

函数:是指一段可以直接被另一段程序调用的程序或代码。

MySQL内置函数:

 字符串函数

-- -----------------------------mysql 内置函数--字符串函数-----------------------------
-- 字符串拼接
-- CONCAT(str1,str2,...)
select CONCAT('I',' love',' you'); -- return I love you

-- 字符串转小写
-- LOWER(str)
select LOWER('I LOVE YOU'); -- return i love you

-- 字符串转大写
-- UPPER(str)
select UPPER('I LOVE YOU'); -- return i love you

-- 左填充,用字符串padstr对str的左边进行填充,达到n个字符串长度
-- LPAD(str,len,padstr)
select LPAD('1',4,0); -- return 0001

-- 右填充,用字符串padstr对str的右边进行填充,达到n个字符串长度
select RPAD('1',4,0) -- RETURN 1000

-- 去掉字符串开始和结尾的空格
-- select TRIM([remstr FROM] str)
select trim('  I love you  ') -- I love you

-- 返回从字符串str从start位置开始起的len个长度的字符串
-- select SUBSTRING(str,pos,len)
select SUBSTR('hello world',1,5) -- return hello 索引从 1 开始

数值函数:

-- -----------------------------mysql 内置函数--数值函数-----------------------------
-- 向上取整
SELECT CEIL(1.1) as count; -- RETURN 2

-- 向下取整
select FLOOR(1.8) count; -- return 1

-- 返回X/Y的摸
select MOD(10,2),MOD(3,3),MOD(3,2),MOD(3,6),MOD(3,9),MOD(5,9)

-- RAND() 返回0-1内的随机数
SELECT RAND() 随机数;
-- 求参数X 的四舍五入的值,保利y为小数
-- select ROUND(X)
-- SELECT ROUND(X,D)
select ROUND(1.44) return1,ROUND(1.51) return2,ROUND(1.444,2)return1点44

-- 案例,通过数据库函数,生成一个6位数的随机验证码
select RAND()*1000000 as 随机六位整数和小数
-- 保四舍五入,留一位小数
select ROUND(RAND()*1000000,0)六位验证码,ROUND(RAND()*100000000,0)八位验证码;
-- 补位法
select LPAD(ROUND(RAND()*100000,0),6,'9') -- 长度不够,用9补
select RPAD(ROUND(RAND()*100000,0),6,'9') -- 长度不够,用9补
select LPAD(ROUND(RAND()*100000,0),8,'9'); -- 长度不够,用9补
select RPAD(ROUND(RAND()*100000,0),8,'9'); -- 长度不够,用9补

日期函数:

-- -----------------------------mysql 内置函数--日期函数-----------------------------
-- 返回当前日期
select CURDATE(),CURRENT_DATE();
-- 返回当前时间
select CURTIME();
-- 字符串拼接
select CONCAT(CURDATE(),' ',CURTIME())
-- 返回当前日期+时间
select NOW();
-- 格式化周几
SELECT DATE_FORMAT(NOW(),'%W'); -- Friday
SELECT DATE_FORMAT('2021-11-11','%W');

-- 日期格式化 | 将时间格式化为 YYYY-mm-dd HH:ii:ss 格式
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s %W');-- 2023/07/07 13:40:19 Friday
-- 将时间格式化为 YYYY/mm/dd HH:ii:ss
SELECT DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s %W'); -- 2023/07/07 13:40:19 Friday

select YEAR(NOW()) 年;
select MONTH(NOW())月;
select DAY(NOW()) 日;
-- 注:星期天为第一天
select DAYNAME(NOW()) 星期几,DAYOFMONTH(NOW())月份,DAYOFWEEK(NOW())周第几天,DAYOFYEAR(NOW())一年的第多少天;
SELECT DAYNAME('2021-11-11');
SELECT WEEKDAY('2021-11-11');

-- DATE_ADD(date,INTERVAL expr unit)
-- DATE_SUB(date,INTERVAL expr unit)
-- DATE_ADD() 函数向日期添加指定的时间间隔。
-- date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。
-- https://www.runoob.com/sql/func-date-add.html
select date_add('2013-01-18', interval '1,2' YEAR_MONTH); -- 新增1年 2个月 ,return 2014-03-08
select date_add('2013-01-18', interval 1 YEAR_MONTH); -- 新增一个月,return 2013-02-18
select date_add('2013-02-18', interval -1 YEAR_MONTH); -- 减一个月,return 2013-01-18


-- DATEDIFF(expr1,expr2)
-- 返回开始时间和借宿时间之间的天数
select DATEDIFF('2023-07-03','2023-07-07') -- return -4
select DATEDIFF('2023-07-07','2017-05-11') 入职天数

-- 获取当时时间戳10位长度
select UNIX_TIMESTAMP(now()),UNIX_TIMESTAMP()
-- 将时间戳格式化为 YYYY-mm-dd HH:ii:ss 格式日期 ---默认
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP())

-- 将时间戳格式化日期(指定日期格式化格式)
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y-%m-%d %H:%i:%s')

-- 处理13位的时间戳转换,需要手动除以 1000
SELECT FROM_UNIXTIME(1627311955999/1000,'%Y-%m-%d %H:%i:%s')

流程函数:

-- -----------------------------mysql 内置函数--流程控制函数-----------------------------
-- 条件为ture,则返回第一个参数,否则返回第二个参数
select if(1>2,'ok','error') result; -- return error

-- 第一个参数如果为 null 则范围第二个参数,否则返回第一个参数
select ifnull('','default') empty; -- 空字符串 
select ifnull(null,'default') result; -- retrun default
select ifnull('ok','default') result;  -- return ok

-- case when else end 
/*
(
case 字段 when xxx then xxx
          when xxx then xxx
				  else xxx
end
)as 重命名字段
*/
select t.*,
(case content when '001' then '一级戒备' 
              when '002' then '二级戒备'
              else '三级戒备' 
end)戒备戒备
from remarkinfo t
ORDER BY t.content;

  

标签:case,return,函数,--,select,字符串,SELECT
From: https://www.cnblogs.com/YYkun/p/17534201.html

相关文章

  • 崎岖行者 js的中的函数(三)
    方法什么是js的方法?简单讲,绑定到对象的函数就是方法。this在对象的方法中,我们常常使用this关键字。this关键字代表方法所绑定的对象。varwangqiang={name:"wangqiang",age:18,city:"guangzhou",address:"tianhe",//......
  • Kotlin中的泛型:协变与逆变
    协变与逆变现在假设存在类A和类B,以及泛型类LIst<A>和泛型类LIst<B>,则协变和逆变的定义如下:协变如果A是B的子类,且List<A>是List<B>的子类,那么可以说泛型List<T>是协变的逆变如果A是B的子类,且List<B>是List<A>的子类,那么可以说泛型List<T>是逆变的Java中的泛型Java中的......
  • 20230706-NOIP模拟赛
    20230706T1.骰子游戏(dice)题目大意给你两个正整数\(n\)和\(d\),你需要构造\(n\)组数据,每组6个整数满足整数都在\([0,10^6]\)范围内,每组数据中两两不同,在每组数据中分别随机选一个数所得到的异或和为\(d\)的倍数如果能构造出这样的\(n\)组数据,请先输出‘Yes’,随后输......
  • hystrix的简单使用
    hystrix是微服务中的一个容错保护组件,用来对调用方请求另一服务时的超时,异常的降级保护。一。.全局配置。在项目中我们不会单独使用hystrix,一般是利用Feign对hystrix的封装。1.开启feign对于hystrix的支持feign.hystrix.enabled=true2.全局配置对feign客户端接口编写......
  • 交换机_RTL8367SC_3光3电
    正面RTL8211FS变压器电源输入电源模块背面EEPROM                    ......
  • 连锁门店监控与普通监控有哪些不同?
    视频监控如今已经成为连锁门店的标配,但是随着门店数量的增多,普通监控已经远远无法满足连锁门店的管理需求。那么,连锁门店在选择监控系统时该重点关注哪些方面?它与普通监控有什么不同呢?安装运维规模更大需要全国同步实施与交付能力连锁门店数量多且分散,因此摄像头的采购数量往往较大......
  • 如何实现pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '
    解决“pymysql.err.OperationalError:(2003,"Can'tconnecttoMySQLserveron'10.1"错误的步骤概述当使用pymysql连接MySQL数据库时,有时会出现连接错误,其中一个常见的错误是pymysql.err.OperationalError:(2003,"Can'tconnecttoMySQLserveron'10.1'")......
  • 如何实现pso优化神经网络pytorch的具体操作步骤
    PSO优化神经网络(PyTorch)实现流程介绍本文将介绍如何使用粒子群优化(ParticleSwarmOptimization,PSO)算法来优化神经网络模型,并使用PyTorch框架来实现。PSO算法是一种基于群体智能的优化算法,通过模拟鸟群觅食行为,来搜索最优解。在神经网络中,我们可以将待优化的参数作为粒子,利用......
  • 解决proAndroid的具体操作步骤
    proAndroidAndroid是一个开放的移动操作系统,由Google开发。它是目前全球市场份额最大的移动操作系统之一。Android操作系统的特点是开放性、可定制性和多样性。它提供了丰富的开发工具和平台,使开发者能够创建各种类型的应用程序,满足用户的不同需求。开发环境为了开始Android开发......
  • 外汇天眼:海汇集团诈骗又一桩!AE Global Link假外汇托管真非法吸金,单一个案损失破千万!
    今年5月,外汇天眼发布了爆料海汇国际的文章「诓称托管保证获利15%,申请出金近1年仍未到账」,仔细分享一位投资人被羽球社团认识的朋友推荐使用DRCFX这家交易商,之后却迟迟无法出金,后来才知道这是恶名昭彰的海汇国际分身平台。上个月,外汇天眼又收到针对海汇集团另一个分身AEGlobalLink......