• MySQL基础之单行函数


    一、字符函数

    1、length,utf8汉字占3个字节
    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('join');
    #示例:将姓大写,名变小写,然后拼接
    SELECT CONCAT(UPPER(last_name),' ',LOWER(first_name)) AS 姓名 FROM employees;
    #4、substr、substring
    #注意:索引是从1开始
    #截取从指定索引处后面所有字符
    SELECT SUBSTR('李莫愁爱上了陆展元', 1) out_put;
    #截取从指定索引处指定字符长度的字符
    SELECT SUBSTR('李莫愁爱上了陆展元', 1,3) out_put;
    
    #姓名中首字符大写,其他字符小写,然后用_拼接显示出来
    SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'',LOWER(SUBSTR(last_name,2)),'_',LOWER(SUBSTR(first_name,1))) AS 姓名 FROM employees;
    #5、instr
    #返回字串第一次出现的索引,如果找不到返回0
    SELECT INSTR('杨不悔爱上了殷六侠','殷六侠') AS out_put;
    
    #6、trim 除去前后字符
    SELECT LENGTH(TRIM('    张翠山    ')) AS out_put;
    SELECT TRIM('aa' FROM 'aaaaa张aaaaa翠山aaa') AS out_put;
    #7、lpad 用指定的字符实现左填充指定长度
    SELECT LPAD('殷素素',10,'*') AS out_put;
    #8、rpad 用指定的字符实现右填充指定长度
    SELECT RPAD('殷素素',10,'*') AS out_put;
    #9、REPLACE	替换
    SELECT REPLACE('张无忌爱上了周芷若','周芷若','赵敏') AS out_put;
    

    二、数字函数

    #1、round 四舍五入
    SELECT ROUND(-1.55);
    SELECT ROUND(1.567,2);
    #2、ceil 向上取整,返回>=该参数的最小整数
    SELECT CEIL(-1.02);
    #3、floor 向下取整,返回<=该参数的最大整数
    SELECT FLOOR(-8.99);         # -9   
    #4、truncate 截断
    SELECT TRUNCATE(1.4555,1);     # 1.4
    #5、mod 取余 MOD(a,b): a-a/b*b
    SELECT MOD(10,-3);
    SELECT 10%3;
    

    三、日期函数

    #1、now 返回当前系统日期+时间
    SELECT NOW();
    #2、curdate 返回当前系统时间,不包含日期
    SELECT CURDATE();
    #3、curtime 返回当前时间,不包含日期 
    SELECT CURTIME();
    #4、可以获取指定的部门,年、月、日、时、分、秒
    SELECT YEAR(NOW()) AS 年	;
    SELECT YEAR('2009-3-4') AS 年	;
    
    #5、str_to_date 将字符通过指定的格式转化成日期
    SELECT STR_TO_DATE('2019-10-4','%Y-%c-%d') AS out_put;
    #查询入职日期为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年'),commission_pct 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,'没奖金,呵呵','有奖金,嘻嘻') AS '备注' FROM employees;
    #2、case函数的使用一 
    #switch case 
    
    CASE 要判断的字段或表达式
    	WHEN 常量1 THEN 要显示的值1或语句1
    	WHEN 常量2 THEN 要显示的值2或语句2
    	...
    	ELSE 要显示的值n或语句n
    END;
    
    
    #案例1:查询员工的工资、要求,部门号=30,显示的工资为1.1倍;部门号=40,显示的工资为1.2倍;部门号=50,显示的工资为1.3倍;其他部门,显示的工资为原工资
    SELECT salary AS '原始工资',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;
    #2、case函数的使用二 类似于 多重if
    CASE 
    	WHEN 条件1 THEN 要显示的值1或语句1
    	WHEN 条件2 THEN 要显示的值2或语句2
    	...
    	ELSE 要显示的值n或语句n
    END;
    
    
    #案例2:查询员工的工资的情况,如果工资>20000,显示A级别;如果工资>15000,显示B级别;如果工资>10000,显示C级别;否则显示D级别
    SELECT salary AS 原工资,
    CASE 
    	WHEN salary>20000 THEN 'A级别'
    	WHEN salary>15000 THEN 'B级别'
    	WHEN salary>10000 THEN 'C级别'
    	ELSE 'D级别'
    END AS '工资级别' FROM employees ORDER BY 工资级别 ASC;
  • 相关阅读:
    mysql两种重要的引擎
    mysql常用代码
    ubuntu常用基本命令
    redis缓存服务器
    memcached缓存服务器
    glusterfs分布式文件服务器
    keepalived双机热备(nginx+mysql)
    nginx负载均衡mysql数据库
    heartbeat双机热备(haproxy或glbd+mysql)
    haproxy负载均衡mysql
  • 原文地址:https://www.cnblogs.com/hejian2836/p/11876474.html
Copyright © 2020-2023  润新知