mysql常见函数

###进阶4:常见函数一、单行函数1、字符函数concat拼接substr截取子串upper转换成大写lower转换成小写trim去前后指定的空格和字符ltrim去左边空格rtrim去右边空格replace替换lpad左填充rpad右填充instr返回子串第一次出现的索引length 获取字节个数2、数学函数round 四舍五入rand 随机数floor向下取整ceil向上取整mod取余truncate截断3、日期函数now当前系统日期+时间curdate当前系统日期curtime当前系统时间str_to_date 将字符转换成日期date_format将日期转换成字符4、流程控制函数if 处理双分支case语句 处理多分支情况1:处理等值判断情况2:处理条件判断5、其他函数version版本database当前库user当前连接用户

#进阶4:常见函数

/*

概念:类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名
好处:1、隐藏了实现细节  2、提高代码的重用性
调用:select 函数名(实参列表) 【from 表】;
特点:
    ①叫什么(函数名)
    ②干什么(函数功能)

分类:
    1、单行函数
    如 concat、length、ifnull等
    2、分组函数
    
    功能:做统计使用,又称为统计函数、聚合函数、组函数
    
常见函数:
    一、单行函数
    字符函数:
    length:获取字节个数(utf-8一个汉字代表3个字节,gbk为2个字节)
    concat
    substr
    instr
    trim
    upper
    lower
    lpad
    rpad
    replace
    
    数学函数:
    round
    ceil
    floor
    truncate
    mod
    
    日期函数:
    now
    curdate
    curtime
    year
    month
    monthname
    day
    hour
    minute
    second
    str_to_date
    date_format
    其他函数:
    version
    database
    user
    控制函数
    if
    case


    

*/


#一、字符函数

#1.length 获取参数值的字节个数
SELECT LENGTH('john');
SELECT LENGTH('张三丰hahaha');

SHOW VARIABLES LIKE '%char%'

#2.concat 拼接字符串

SELECT CONCAT(last_name,'_',first_name) 姓名 FROM employees;

#3.upper、lower
SELECT UPPER('john');
SELECT LOWER('joHn');
#示例:将姓变大写,名变小写,然后拼接
SELECT CONCAT(UPPER(last_name),LOWER(first_name))  姓名 FROM employees;

#4.substr、substring
注意:索引从1开始
#截取从指定索引处后面所有字符
SELECT SUBSTR('李莫愁爱上了陆展元',7)  out_put;

#截取从指定索引处指定字符长度的字符
SELECT SUBSTR('李莫愁爱上了陆展元',1,3) out_put;


#案例:姓名中首字符大写,其他字符小写然后用_拼接,显示出来

SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2)))  out_put
FROM employees;

#5.instr 返回子串第一次出现的索引,如果找不到返回0

SELECT INSTR('杨不殷六侠悔爱上了殷六侠','殷八侠') AS out_put;

#6.trim

SELECT LENGTH(TRIM('    张翠山    ')) AS out_put;

SELECT TRIM('aa' FROM 'aaaaaaaaa张aaaaaaaaaaaa翠山aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')  AS out_put;

#7.lpad 用指定的字符实现左填充指定长度

SELECT LPAD('殷素素',2,'*') AS out_put;

#8.rpad 用指定的字符实现右填充指定长度

SELECT RPAD('殷素素',12,'ab') AS out_put;


#9.replace 替换

SELECT REPLACE('周芷若周芷若周芷若周芷若张无忌爱上了周芷若','周芷若','赵敏') AS out_put;

#二、数学函数

#round 四舍五入
SELECT ROUND(-1.55);
SELECT ROUND(1.567,2);


#ceil 向上取整,返回>=该参数的最小整数

SELECT CEIL(-1.02);

#floor 向下取整,返回<=该参数的最大整数
SELECT FLOOR(-9.99);

#truncate 截断

SELECT TRUNCATE(1.69999,1);

#mod取余
/*
mod(a,b) :  a-a/b*b

mod(-10,-3):-10- (-10)/(-3)*(-3)=-1
*/
SELECT MOD(10,-3);
SELECT 10%3;


#三、日期函数

#now 返回当前系统日期+时间
SELECT NOW();

#curdate 返回当前系统日期,不包含时间
SELECT CURDATE();

#curtime 返回当前时间,不包含日期
SELECT CURTIME();


#可以获取指定的部分,年、月、日、小时、分钟、秒
SELECT YEAR(NOW()) 年;
SELECT YEAR('1998-1-1') 年;

SELECT  YEAR(hiredate) 年 FROM employees;

SELECT MONTH(NOW()) 月;
SELECT MONTHNAME(NOW()) 月;


#str_to_date 将字符通过指定的格式转换成日期

SELECT STR_TO_DATE('1998-3-2','%Y-%c-%d') AS out_put;

#查询入职日期为1992--4-3的员工信息
SELECT * FROM employees WHERE hiredate = '1992-4-3';

SELECT * FROM employees WHERE hiredate = STR_TO_DATE('4-3 1992','%c-%d %Y');


#date_format 将日期转换成字符

SELECT DATE_FORMAT(NOW(),'%y年%m月%d日') AS out_put;

#查询有奖金的员工名和入职日期(xx月/xx日 xx年)
SELECT last_name,DATE_FORMAT(hiredate,'%m月/%d日 %y年') 入职日期
FROM employees
WHERE commission_pct IS NOT NULL;


#四、其他函数

SELECT VERSION();
SELECT DATABASE();
SELECT USER();


#五、流程控制函数
#1.if函数: if else 的效果

SELECT IF(10<5,'大','小');

SELECT last_name,commission_pct,IF(commission_pct IS NULL,'没奖金,呵呵','有奖金,嘻嘻') 备注
FROM employees;


#2.case函数的使用一: switch case 的效果

/*
java中
switch(变量或表达式){
    case 常量1:语句1;break;
    ...
    default:语句n;break;


}

mysql中

case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1;
when 常量2 then 要显示的值2或语句2;
...
else 要显示的值n或语句n;
end
*/

/*案例:查询员工的工资,要求

部门号=30,显示的工资为1.1倍
部门号=40,显示的工资为1.2倍
部门号=50,显示的工资为1.3倍
其他部门,显示的工资为原工资

*/


SELECT salary 原始工资,department_id,
CASE department_id
WHEN 30 THEN salary*1.1
WHEN 40 THEN salary*1.2
WHEN 50 THEN salary*1.3
ELSE salary
END AS 新工资
FROM employees;

#3.case 函数的使用二:类似于 多重if
/*
java中:
if(条件1){
    语句1;
}else if(条件2){
    语句2;
}
...
else{
    语句n;
}

mysql中:

case 
when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值2或语句2
。。。
else 要显示的值n或语句n
end
*/

#案例:查询员工的工资的情况
如果工资>20000,显示A级别
如果工资>15000,显示B级别
如果工资>10000,显示C级别
否则,显示D级别


SELECT salary,
CASE 
WHEN salary>20000 THEN 'A'
WHEN salary>15000 THEN 'B'
WHEN salary>10000 THEN 'C'
ELSE 'D'
END AS 工资级别
FROM employees;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数组循环移位

设计一个算法&#xff0c;把一个含有N个元素的数组循环右移K位&#xff0c;要求时间复杂度为O&#xff08;N&#xff09;&#xff0c;且只允许使用两个附加变量。 不合题意的解法如下&#xff1a; 我们先试验简单的办法&#xff0c;可以每次将数组中的元素右移一位&#xff0c;…

数据结构之树概述

非线性结构&#xff1a; 树的定义&#xff1a;树&#xff08;Tree&#xff09;是n&#xff08;n>0&#xff09;个节点的有限集T。它或是空集&#xff08;空树即n0&#xff09;&#xff0c;或者是非空集。 对于任意一颗非空树&#xff1a; &#xff08;1&#xff09;有且仅…

IIS7中WCF配置问题集合

1 IIS注册WCF 以管理员身份运行命令行&#xff1a; "C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -r -y 2 问题&#xff1a;无法找到 ServiceHost 指令中作为服务属性值提供的类型 将网站转换为应用程序 3 无法…

解决scanf_s函数报错:没有为格式字符串传递足够的参数

报错&#xff1a;scanf_s函数报错:没有为格式字符串传递足够的参数 int main() {char s1[20] "i m name";char *p1, *p2;char s3[10] {0};p1 s1;p2 s3;printf("请输入你的名字: \n");scanf_s("%s",&s3);printf("%s\n", s3);f…

Commons codec jar包详解

Commons项目中用来处理常用的编码方法的工具类包&#xff0c;例如DES、SHA1、MD5、Base64, 及 hex, metaphone, soundex 等编码演算。 JavaDoc:http://www.osctools.net/apidocs/apidoc?apicommons-codec 官网下载地址&#xff1a;http://commons.apache.org/codec/ 使用&…

数据结构:在一个单链表中,若删除p指向节点的后继节点,则执行的操作为:( )

在一个单链表中,若删除p指向节点的后继节点,则执行的操作为&#xff1a;&#xff08; &#xff09; A.qp->next; p->nextp->next->next; free(q) B.pp->next; qp->next;pq->next; free(q) C.qp->next->next; pp->next; free(q) D.pp->next-&…

使用ActionScript实现滤镜效果

使用ActionScript实现滤镜效果2009年02月24日 11:17用as做滤镜效果&#xff0c;每种滤镜效果对应一个类别&#xff0c;这些类别将来会在Macromedia\Flash 8\语系\First Run\Classes\FP8\flash\filters 这个资料夹中. 一、渐变斜角——GradientBevelFilter类别 二、投影——Drop…

已知先序和中序求后序

先序: ABCDEFGH 中序: BDCEAFHG 求后序:DECBHGFA 具体看B站郝斌视频&#xff1a;https://www.bilibili.com/video/BV11s41167h6?p71

微软的Surface平板电脑RT版,RT是什么缩写?|转|

http://www.guokr.com/question/240887/ 1# 其实rt是win8家族的新成员&#xff0c;专为arm系列处理器设计的windows 8版本&#xff0c;不兼容win32程序 2# zzllrr 2012-06-21 09:28:19 找到权威解答了&#xff1a;“RT”代表“Runtime”的意思。既Windows Runtime Library&…

对广义表L=((a,b),(c,d),(e,f))执行操作tail(tail(L))的结果是 ()

对广义表L((a&#xff0c;b)&#xff0c;(c&#xff0c;d)&#xff0c;(e&#xff0c;f))执行操作tail(tail(L))的结果是 ( ) 。 A&#xff0e;(e&#xff0c;f) B&#xff0e;((e&#xff0c;f)) C&#xff0e;(f) D&#xff0e;() 本题考查广义表的概念和特征。 广义表是线性…

USACO sec2.1 Ordered Fractions

首先两重 for 循环对可能取的值约分&#xff0c;分子分母分别存放&#xff0c;根据比较分数大小的方法排序&#xff0c;然后按顺序输出&#xff08;相同的只输出一个&#xff09;&#xff1b; /* PROG : frac1 LANG : C */ # include <stdio.h> # include <stdlib.h&g…

二维教组A[12][18]采用列优先的存储方法,若每个元素各占3个存储单元,且第1个元素的地址为150,则元素A[9][7]的地址为 ( )

二维教组A[12][18]采用列优先的存储方法&#xff0c;若每个元素各占3个存储单元&#xff0c;且第1个元素的地址为150&#xff0c;则元素A[9][7]的地址为 ( ) A&#xff0e;429 B&#xff0e;432 C&#xff0e;435 D&#xff0e;438 [分析] 本题考查数组元素存储地址的计算。…

python threading 两种创建方式

作用&#xff1a;建立在thread模块之上&#xff0c;可以更容易地管理多个执行线程。 通过使用线程&#xff0c;程序可以在同一个进程空间并发地运行多个操作。threading模块建立在thread的底层特性基础上&#xff0c;可以更容易地完成线程处理。 1、调用函数 要使用Thread&…

对广义表L=((a,b),c,d)进行操作tail(head(L))的结果是

对广义表L((a,b),c,d)进行操作tail(head(L))的结果是( ) A&#xff0e;&#xff08;c,d&#xff09; B&#xff0e;(d) C&#xff0e; b D&…

ScaleForm十六戒言

不知不觉&#xff0c;在不停地叫骂、哀嚎、惊叹、欢喜中&#xff0c;开发工作已经走过了一个节点了&#xff0c;UE3作为一个顶级&#xff0c;维护多年的引擎&#xff0c;层层深入后&#xff0c;发现每一块都有值得深入&#xff0c;值得改进的地方&#xff0c;平时负责一些场景&…

一个含n个顶点和e条弧的有向图以邻接矩阵表示法为存储结构,则计算该有向图中某个顶点出度的时间复杂度为

一个含n个顶点和e条弧的有向图以邻接矩阵表示法为存储结构&#xff0c;则计算该有向图中某个顶点出度的时间复杂度为( ) A&#xff0e;O(n) B&#xff0e;O(e) C&#xff0e;O(ne) …

PO三种状态

PO三种状态&#xff1a; 瞬态&#xff1a;如果PO实例从未与Session关联过&#xff0c;该PO实例处于瞬态状态。 持久化&#xff1a;如果PO实例与Session关联起来&#xff0c;且该实例对应到数据库记录&#xff0c;则该实例处于持久化状态。 托管&#xff1a;如果PO实例曾经与ses…

C++Primer学习之一引用和指针

一&#xff0e;引用 引用是一种复合类型&#xff0c;引用分为左值引用和右值引用&#xff0c;其中右值引用时C11提出来的&#xff0c; 常说的引用其意为左值引用。注意&#xff1a;引用不是对象&#xff0c;它是一个对象&#xff08;变量&#xff09;的别名&#xff0c;不能改…

第四课 脱壳必备知识要点及方法

第四课 脱壳必备知识要点及方法 今天所要讲的是这高级篇中最为关键&#xff0c;最为重要的一课&#xff0c;希望大家能认真学习&#xff0c;反复推敲&#xff0c;举一反三学习脱壳的各种方法&#xff0c;当然有的时候可能需要几种方法一起使用&#xff0c;今后我们也会一点一点…

C++Primer学习之二#define,const,constexpr

一&#xff0e;#define 是预处理操作符&#xff08;宏定义&#xff09;&#xff0c;编译器将在编译过程中用到该变量的地方替换成对应的值。 二&#xff0e;Const const是声明常量的限定符&#xff0c;它可以约定一个变量为常量。 如: Const int buffsize 1024; 编译器将…