sql-函数

195 阅读3分钟

日期函数

1.  函数:NOW() | CURDATE() | CURTIME()
	描述:获取系统当前日期时间、日期、时间
	实例:SELECT NOW();
	      SELECT CURDATE();
	      SELECT CURTIME();
2.  函数:YEAR(DATE) | MONTH(DATE) | DAY(DATE)
	描述:从日期中选择出年、月、日
	实例:SELECT YEAR(NOW()); 
	      SELECT MONTH(NOW());
	      SELECT DAY(NOW());
3.  函数:LAST_DAY(DATE)
	描述:返回月份的最后一天
	实例:SELECT LAST_DAY(NOW());
4.  函数:ADDDATE(DATE,n) | SUBDATE(DATE,n)
	描述:计算起始日期 DATE 加(减) n 天的日期
	实例:SELECT ADDDATE(NOW(),10);
	      SELECT SUBDATE(NOW(),20);
5.  函数:QUARTER(DATE)
	描述:返回日期 DATE 是第几季节,返回 14
	实例:SELECT QUARTER(NOW());
6.  函数:DATEDIFF(d1,d2)
	描述:计算日期 d1->d2 之间相隔的天数
	实例:SELECT DATEDIFF('1998-01-02','1998-06-30');
7.  函数:DATE_FORMAT(d,f)
	描述:按表达式 f的要求显示日期 d
	实例:SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H-%M-%s');(日期里时小写h12小时制)

数学函数

1.  函数:ABS(X)
	描述:返回 X 的绝对值  
	实例:SELECT ABS(-100);
2.  函数:CEIL(X) | FLOOR(X)
	描述:向上(下)取整
	实例:SELECT CEIL(1.5);
	      SELECT FLOOR(1.5);
3.  函数:MOD(X,Y)
	描述:返回X MOD Y的结果,取余
	实例:SELECT MOD(6,4);
4.  函数:RAND()
	描述:返回 01 的随机数
	实例:SELECT RAND();
5.  函数:ROUND(X)  ROUND(X,Y)  保留X的Y位小数且四舍五入
	描述:四舍五入
	实例:SELECT ROUND(1.2345);
	      SELECT ROUND(1.2345,3);
6.  函数:TRUNCATE(X,Y) 舍尾法
	描述:返回数值 X 保留到小数点后 Y 位的值
	实例:SELECT TRUNCATE(1.2345,3);
	      SELECT TRUNCATE(1.2345,7);

字符串函数

1.  函数:CONCAT(s1,s2...sn)
	描述:字符串 s1,s2 等多个字符串合并为一个字符串
	实例:SELECT CONCAT('杨','晨');
2.  函数:CHAR_LENGTH(str)
	描述:返回字符串 str 的字符数
	实例:SELECT CHAR_LENGTH('杨晨');
3.  函数:LENGTH(str)  返回字符串 s 的字节数
	描述:中文在utf8占3个字节,在gbk下占2个字节
	实例:SELECT LENGTH('杨晨');
4.  函数:UCASE(s) | UPPER(s)
	描述:将字符串转换为大写
	实例:SELECT UCASE('dover');
	      SELECT UPPER('dover');
5.  函数:LCASE(s) | LOWER(s)
	描述:将字符串转换为小写
	实例:SELECT LCASE('DOVER');
	      SELECT LOWER('DOVER');
6.  函数:LOCATE(s1,s)
	描述:从字符串 s 中获取 s1 的开始位置(从1开始)
	实例:SELECT LOCATE('ov','dover');
7.  函数:TRIM(str) | LTRIM(str) | RTRIM(str)
	描述:字符串去空格
	实例:SELECT TRIM('d o v e r');
	      SELECT LTRIM('d o v e r');
	      SELECT RTRIM('d o v e r');
8.  函数:REPLACE(s,s1,s2)
	描述:将字符串 s2 替代字符串 s 中的字符串 s1
	实例:SELECT REPLACE('dover','do','flo');
9.  函数:SUBSTR(s, START, LENGTH)
	描述:从字符串 s 的 START 位置截取长度为 LENGTH 的子字符串
	实例:SELECT SUBSTR('dover',2,3);
10. 函数:STRCMP(str1,str2)
	描述:比较字符串大小,左大于右时返回1,	
	左等于右时返回0,左小于于右时返回-1,
	实例:SELECT STRCMP('杨晨','猫爬');

case函数(switch)

对查询的结果进行判断用到

-- 语法 
SELECT 字段,字段,...,
    CASE 表名.字段 
           WHEN   判断条件1    THEN    希望的到的值1
           WHEN   判断条件2    THEN    希望的到的值2
           ELSE 前面条件都没有满足情况下得到的值 
      END 新列名
FROM  表名;


SELECT ename,sal,grade,
	CASE emp.grade
		WHEN 1 THEN '谈恋爱'
		WHEN 2 THEN '结婚'
		WHEN 3 THEN '赡养老人,抚养小孩'
		ELSE '天龙人'
	END '阶段'
FROM emp

case后接的字段可以不在查询后出现

if函数

在查询的结果中要对数据进行展示结果判断时使用到

-- 语法 
SELECT IF( 条件表达式 ,条件成立的结果, 条件失败的结果)   FROM  table_name;
-- 工资+奖金大于3000的员工 显示养老阶段,否则显示发展阶段
SELECT ename,sal,comm,
	IF (sal+IFNULL(comm,0)>=3000,'养老阶段','发展阶段')
FROM emp;

-- 如果字段值为空,显示为0
IFNULL(字段,0)