深入浅出MySQL(5)-----MySQL常用函数

1. 数学函数

  1. CEIL():进一取整
  2. FLOOR() : 舍掉小数部分
  3. ROUND() : 四舍五入
  4. TRUNCATE() : 截取小数点后几位
  5. MOD() : 取余数
  6. ABS() : 取绝对值
  7. POWER(): 幂运算
  8. PI(): 圆周率
  9. RAND()或者RAND(X): 0-1之间的随机数
  10. SIGN(X): 得到数字符号
  11. EXP(X): 计算 e 的 x 次方

2. 字符串函数

  1. CHAR_LENGTH('ABCD'): 计算字符的长短

-- 测试字符串函数

  1. CHAR_LENGTH():得到字符串的字符数

    SELECT CHAR_LENGTH('abc');
    -- 返回3
    
  2. LENGTH():返回字符串的长度

    SELECT LENGTH('abc');
    -- 返回3
    
    • 如果是中文,则返回原来ASCII码的长度
  3. CONCAT(s1,s2,....):将字符串合并成一个字符串

    SELECT CONCAT('a','b','c');
    -- 如果字符串中包含NULL,返回拼接结果就是NULL
    -- 返回'abc'
    SELECT CONCAT('a','b','c',null);
    -- 返回 NULL
    
  4. CONCAT_WS(x,s1,s2,s2....):以指定分隔符拼接字符串

    SELECT CONCAT_WS('-','a','b','c');
    -- 如果null在拼接的内容中,则转化成空字符串
    SELECT CONCAT_WS('-','a','b','c',null);
    -- 如果分隔符为null,拼接的结果为null
    SELECT CONCAT_WS(null,'a','b','c');
    
  5. 将字符串转换成大写或者小写 UPPER() | UCASE() | LOWER() | LCASE()

    SELECT UPPER('hello king'),UCASE('hello imooc'),LOWER('HELLO ADMIN'),LCASE('HELLO EVERYBODY');
    
  6. 字符串的反转REVERSE()

    SELECT REVERSE('abc');
    
  7. LEFT()|RIGHT():返回字符串的前几个字符或者后几个字符

    SELECT LEFT('hello',2),RIGHT('hello',2);
    
  8. LPAD()|RPAD():用字符串填充到指定长度

    SELECT LPAD('abc',10,'?');
    -- 返回'abc???????'
    SELECT RPAD('abc',10,'!');
    -- 返回'acb!!!!!!!'
    
  9. 去掉字符串两端的空格TRIM() | LTRIM() | RTRIM():

    SELECT CONCAT('*',TRIM(' abc '),'*'),
    CONCAT('*',LTRIM(' abc '),'*'),
    CONCAT('*',RTRIM(' abc '),'*');
    
  10. REPEAT():重复指定的次数

    SELECT REPEAT('hello',3);
    
  11. REPLACE():字符串

    SELECT REPLACE('hello king','king','queen');
    
  12. 截取字符串SUBSTRING()

    SELECT SUBSTRING('abcdef',1,3);
    
  13. 比较字符串STRCMP()

    SELECT STRCMP('a','b');
    

3. 日期时间函数

  1. 测试日期时间函数 & 返回当前日期

    SELECT CURDATE(),CURRENT_DATE();
    
  2. 返回当前时间

    SELECT CURTIME(),CURRENT_TIME();
    
  3. 返回当前的日期时间

    SELECT NOW(),CURRENT_TIMESTAMP(),SYSDATE();
    
  4. 返回日期中的月份和月份的名称

    SELECT MONTH('2017-02-19');
    
    SELECT MONTH(CURDATE()),MONTHNAME(CURDATE());
    
  5. 返回星期几

    SELECT DAYNAME(NOW());
    
  6. 返回一周内的第几天,0代表星期一

    SELECT DAYOFWEEK(NOW());
    
    SELECT WEEK(NOW());
    
    SELECT YEAR(NOW()),MONTH(NOW()),DAY(NOW()),HOUR(NOW()),MINUTE(NOW()),SECOND(NOW());
    
  7. DATEDIFF()计算两个日期相差的天数

    SELECT DATEDIFF('2017-03-06','2017-03-02');
    

4. 其他常用函数

  1. 测试其它常用函数

    SELECT VERSION(),CONNECTION_ID();
    SELECT USER(),CURRENT_USER(),SYSTEM_USER(),SESSION_USER();
    
  2. 得到上一步插入操作产生AUTO_INCREMENT的值*

    SELECT LAST_INSERT_ID();
    
  3. PASSWORD():密码加密算法

    SELECT MD5('king');
    SELECT PASSWORD('root');