ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DQL——常见函数之单行函数

2021-06-20 22:58:16  阅读:227  来源: 互联网

标签:语句 函数 employees put 单行 DQL SELECT out


   概念:
             类似于java中的方法,将一组逻辑语句封装在方法体中,对外暴露方法名
   
   好处:1、隐藏了实现细节    2、提高代码的重用性
   
   调用:
             select  函数名(实参列表)  【from  表】
        
   特点:叫什么(函数名)、干什么(函数功能)
   
   分类:
             1、单行函数:如concat、length、ifnull等
             2、分组函数:功能:做统计使用,又称为统计函数、聚合函数、组函数

  常见单行函数:
           字符函数:length
                             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_formate
           其他函数:version
                             datebase
                             user
           控制函数:if
                            case
          

单行函数

一、字符函数

1.length  获取参数值的字节个数

SELECT LENGTH('jhon');
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('李莫愁爱上了陆展元',6) out_put;

截取从指定索引处指定字符长度的字符

SELECT SUBSTR('李莫愁爱上了陆展元',1,3) out_put;

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

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

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

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

6.trim 去掉前后指定字符

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

SELECT TRIM('a' FROM 'aaaaaaaaa张aaaaaaaaa翠山aaaaaaaaaaaaaaaa') AS out_put;

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

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

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

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

9.replace 替换

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

二、数学函数

1.round  四舍五入

SELECT ROUND(-1.65);
SELECT ROUND(1.567,2);

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

SELECT CEIL(1.00002);

3.floor  向下取整,返回<=该参数的最大整数

SELECT FLOOR(-9.99);

4.truncate  截断,小数点后保留几位

SELECT TRUNCATE(1.65,1);

5.mod  取余

SELECT MOD(10,3);

SELECT 10%3;

三、日期函数

1.now  返回当前系统日期+时间

SELECT NOW();

2.curdate 返回当前系统日期,不包含时间

SELECT CURDATE();

3.curtime 返回当前时间,不包含日期

SELECT CURTIME();

可以获取指定的部分,年、月、日、小时、分钟、秒

SELECT YEAR(NOW()) 年;
SELECT YEAR('1998-1-1') 年; 
SELECT YEAR(hiredate) 年 FROM employees;

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

 4.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');

5.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:语句一;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 BETWEEN 15000 AND 20000 THEN 'B'
    WHEN salary BETWEEN 10000 AND 15000 THEN 'C'
    ELSE 'D' 
  END AS 级别 
FROM
  employees ;

 

标签:语句,函数,employees,put,单行,DQL,SELECT,out
来源: https://blog.csdn.net/L_zhai/article/details/118074629

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有