mysql函式

嘻嘻碩發表於2017-06-29

MySQL函式

MySQL函式介紹

  1. 數學函式
  2. 字串函式
  3. 時間函式
  4. 加密函式

數學函式

注意: 每個函式前面都需要加SELECT

  • 數學函式

    • ABS() 返回絕對值 如: (-100) 值 : 100
    • PI() 返回Π的圓規率 如 (不用寫) 值 : 3.1415926
    • CEIL() 向上取整數 如:(3.14) 值 :4 ( 注意第三個是i )
  • FLOOR() 向下取整數 如: (3.14) 值 :3
  • POW(x,y) x的y次方 如(2,3) 值 :8
  • RAND() 隨機返回0-1值 如 :() 值 : 0.018137501569592863
  • TRUNCATE(x,y) x保留y位小數 如 :(3.1415926,3) 值 :3.141
-- abs() 絕對值
SELECT ABS (-100);

-- pi() 返回圓 Π 規率
SELECT PI();

--  SQRT ()返回非負數x的二次方
SELECT SQRT(2);

--  POW 返回 x的 y 次乘方 需要
SELECT POW(2,10);
SELECT POWER(2,10)

-- CELL() or 
SELECT CEIL(3.14);  -- 向上取整數

-- floor()
SELECT FLOOR(3.14); -- 向下取整數

-- round() 四捨五入取整數 還可以保留小數
SELECT ROUND(3.4);
SELECT ROUND(3.5);
SELECT ROUND(3.7,2)


-- pow() x 的 y 次方
SELECT POW(2,3);


-- random 隨機0到1 
SELECT RAND();

-- truncate() 保留小數 選擇 
SELECT TRUNCATE(3.14159265758,3);
SELECT TRUNCATE(RAND()* 1000 ,3);

字串函式

  • 字串函式

    • LENGTH() 獲取長度 如:('abc') 值為: 3
    • CHAR_LENGTH 長度 如:('add') 值為: 3
    • UPPER() 字串裡英文全大寫 ('abcde') 值:ABCDE
    • LOWER() 字串裡英文全小寫 ()
    • TRIM() 去空格
    • REVERES() 反轉
    • REPLACE(str,len1,len2) len1代替len2
    • SUBSTRLNG(y,z) 擷取y 到 z
-- 字串函式  -- RIGHT

SELECT LENGTH('fdsajfadslksdafk');

SELECT CHAR_LENGTH('fdsajfadslksdafk');

-- lower upper  --全部變成大寫、小寫
SELECT UPPER('fdsajfadslksdafk');
SELECT LOWER('AFASDF');

-- trim()  去兩端空格
SELECT TRIM( ' abc ' )
SELECT TRIM('    afdjkadsfjkll  asd;fasf     ');

-- reverse() 反轉
SELECT REVERSE('abcdefg');
SELECT REVERSE(TRIM('    afdjkadsfjkll  asd;fasf     '));、


-- replace(str,len1,len2) len1 代替 len2
SELECT REPLACE('QQ群個個都是人才,說話又好聽' , '人才', '鬼才');

SELECT REPLACE('路演其是班草', '阿呆呆', '曹某某');

--  擷取 y 擷取 z 
SELECT SUBSTRING('監x裡個個都是人才,說話又好聽',4,5);

日期函式

  • 日期函式

    • SYSDATE() 系統日期+時間
    • CURDATE() 系統日期
    • CURETIME() 系統時間
    • WEEKDAY() 返回日期引數 注意時間:0-6需要+1
    • DAYNAME() 系統告訴你 今天星期幾
  • YEAR() 查年
  • MONTH() 查月
  • DAY()查日
  • HOUR()查時
  • MINUTE() 查分
  • SECOUND() 查秒
  • WEEK() 查周

ADDDATE(date,interval,值) 新增到後面得日期 如 : (NOW(),INTERVAL,50 YEAR)

DATEDIFF(date,date) 連個值得相隔 如 : ABS(DATEDIFF('2005-8-26','2021-9-23'))

-- 日期函式

-- 系統當前日期 sysdate()
SELECT SYSDATE() 系統當前日期; -- 要 時分秒 
-- (日期和時間)
SELECT CURDATE() 系統當前日期; -- 當前的日期 
-- (日期)
SELECT CURTIME() 系統當前時間 ;
-- (時間)

--  dayofweek() 今天時本週week -月month - 年year
SELECT DAYOFYEAR(SYSDATE()) 今天是這一年的第幾天;
SELECT DAYOFMONTH(SYSDATE()) 今天是這一月的第幾天; 
SELECT DAYOFWEEK('2021-9-19')  今天是這一週的第幾天; -- 1-7

-- weekday 
SELECT WEEKDAY(SYSDATE()) + 1 今天是星期幾; -- 0-6

-- dayname 星期幾 
SELECT DAYNAME('2001-9-18') 

-- 年月日時分秒 year month day hour minute second
SELECT YEAR(SYSDATE()) 年;
SELECT MONTH(SYSDATE()) 月;
SELECT DAY(SYSDATE()) 日;

SELECT HOUR(SYSDATE()) 時;
SELECT MINUTE(SYSDATE()) 分;
SELECT SECOND(SYSDATE()) 秒; 
-- 周 
SELECT WEEK(SYSDATE()) 周; 


-- adddate(date,interval expr type)  新增時間後的日期
-- 假設你還有50年壽命,50年後這個時間是多少
SELECT ADDDATE(NOW(),INTERVAL 50 YEAR);
SELECT ADDDATE(NOW(), INTERVAL 50 SECOND);

-- datediff(date1, date2) 兩個時間的間隔  
SELECT ABS(DATEDIFF('2005-8-26','2021-9-23')); -- 1984 - 3 - 24


-- 假設路演其出生時間2005年7月15 請問他到選擇活了多少分鐘
-- 假設他還有80年的壽命 80年後是多久

SELECT  ABS(DATEDIFF('2005-7-15',SYSDATE()) ) * 1444  ;

SELECT  ADDDATE(NOW(), INTERVAL 80 YEAR);

加密函式

  • PASSWORD(str) 加密後不可以逆轉
  • MD5(str) 加密後可以逆轉 注:以前不許
  • CHARSET() 檢視mysel 版本

-- 加密函式

SELECT PASSWORD('123456') 加密後不可以逆轉;
SELECT PASSWORD('666666') 加密後不可以逆轉;

-- MD5
SELECT PASSWORD('123456') 加密後不可以逆轉 MD5('123456') 加密後可以逆轉

-- 版本檢視
SELECT VERSION();
SELECT CHARSET('123456');


-- md5 加密
-- 雪花推特演算法 



相關文章