Mysql基礎03-函數

函數

字符串函數

函數用法
CONCAT(S1,S2,......,Sn) 連接S1,S2,......,Sn爲一個字符串
CONCAT_WS(s, S1,S2,......,Sn) 同CONCAT(s1,s2,...)函數,但是每個字符串之間要加上s
CHAR_LENGTH(s) 返回字符串s的字符數
LENGTH(s) 返回字符串s的字節數,和字符集有關
INSERT(str, index , len, instr) 將字符串str從第index位置開始,len個字符長的子串替換爲字符串instr
UPPER(s) 或 UCASE(s) 將字符串s的所有字母轉成大寫字母
LOWER(s) 或LCASE(s) 將字符串s的所有字母轉成小寫字母
LEFT(s,n) 返回字符串s最左邊的n個字符
RIGHT(s,n) 返回字符串s最右邊的n個字符
LPAD(str, len, pad) 用字符串pad對str最左邊進行填充,直到str的長度爲len個字符
RPAD(str ,len, pad) 用字符串pad對str最右邊進行填充,直到str的長度爲len個字符
LTRIM(s) 去掉字符串s左側的空格
RTRIM(s) 去掉字符串s右側的空格
TRIM(s) 去掉字符串s開始與結尾的空格
TRIM(【BOTH 】s1 FROM s) 去掉字符串s開始與結尾的s1
TRIM(【LEADING】s1 FROM s) 去掉字符串s開始處的s1
TRIM(【TRAILING】s1 FROM s) 去掉字符串s結尾處的s1
REPEAT(str, n) 返回str重複n次的結果
REPLACE(str, a, b) 用字符串b替換字符串str中所有出現的字符串a
STRCMP(s1,s2) 比較字符串s1,s2
SUBSTRING(s,index,len) 返回從字符串s的index位置其len個字符
LOWER('SQL Course') 改變字符爲小寫
UPPER('SQL Course')
改變字符爲大寫

數學函數

函數用法
ABS(x) 返回x的絕對值
CEIL(x) 返回大於x的最小整數值
FLOOR(x) 返回小於x的最大整數值
MOD(x,y) 返回x/y的餘數
RAND() 返回0~1的隨機值
ROUND(x,y) 返回參數x的四捨五入的有y位的小數的值
TRUNCATE(x,y) 返回數字x截斷爲y位小數的結果
SQRT(x) 返回x的平方根
POW(x,y) 返回x的y次方

日期函數

函數用法
CURDATE() 或 CURRENT_DATE() 返回當前日期
CURTIME() 或 CURRENT_TIME() 返回當前時間
NOW() / SYSDATE() / CURRENT_TIMESTAMP() / LOCALTIME() / LOCALTIMESTAMP() 返回當前系統日期時間
YEAR(date) / MONTH(date) / DAY(date) / HOUR(time) / MINUTE(time) / SECOND(time) 返回具體的時間值
WEEK(date) / WEEKOFYEAR(date) 返回一年中的第幾周
DAYOFWEEK() 返回周幾,注意:週日是1,週一是2,。。。週六是7
WEEKDAY(date) 返回周幾,注意,周1是0,周2是1,。。。週日是6
DAYNAME(date) 返回星期:MONDAY,TUESDAY.....SUNDAY
MONTHNAME(date) 返回月份:January,。。。。。
DATEDIFF(date1,date2) / TIMEDIFF(time1, time2) 返回date1 - date2的日期間隔 / 返回time1 - time2的時間間隔
DATE_ADD(datetime, INTERVAL expr type) 返回與給定日期時間相差INTERVAL時間段的日期時間
DATE_FORMAT(datetime ,fmt) 按照字符串fmt格式化日期datetime值
STR_TO_DATE(str, fmt) 按照字符串fmt對str進行解析,解析爲一個日期

流程函數

函數用法
IF(value,t ,f) 如果value是真,返回t,否則返回f
IFNULL(value1, value2) 如果value1不爲空,返回value1,否則返回value2
CASE WHEN 條件1 THEN result1 WHEN 條件2 THEN result2 .... [ELSE resultn] END 相當於Java的if...else if...else...
CASE expr WHEN 常量值1 THEN 值1 WHEN 常量值1 THEN 值1 .... [ELSE 值n] END 相當於Java的switch...case...

其他函數

函數用法
database() 返回當前數據庫名
version() 返回當前數據庫版本
user() 返回當前登錄用戶名
password(str) 返回字符串str的加密版本,41位長的字符串
md5(str) 返回字符串str的md5值,也是一種加密方式

單行函數

  • 只對一行進行變換,每行返回一個結果

  • 可以嵌套

  • 參數可以是一字段或一個表達式或一個值

分組函數

分組函數作用於一組數據,並對一組數據返回一個值。

可以對數值型數據使用AVG 和 SUM 函數。

可以對任意數據類型的數據使用 MIN 和 MAX 函數。

COUNT(*)返回表中記錄總數,適用於任意數據類型

另:DATE_ADD(datetime,INTERVAL expr type)

表達式類型:

參數類型參數類型
YEAR YEAR_MONTH
MONTH DAY_HOUR
DAY DAY_MINUTE
HOUR DAY_SECOND
MINUTE HOUR_MINUTE
SECOND HOUR_SECOND
  MINUTE_SECOND

DATE_FORMAT(datetime,fmt) 和 STR_TO_DATE(str, fmt)

表達式類型:

格式符說明格式符說明
%Y 4位數字表示年份 %y 表示兩位數字表示年份
%M 月名錶示月份(January,....) %m 兩位數字表示月份(01,02,03。。。)
%b 縮寫的月名(Jan.,Feb.,....) %c 數字表示月份(1,2,3,...)
%D 英文後綴表示月中的天數(1st,2nd,3rd,...) %d 兩位數字表示月中的天數(01,02...)
%e 數字形式表示月中的天數(1,2,3,4,5.....)    
%H 兩位數字表示小數,24小時制(01,02..) %h和%I 兩位數字表示小時,12小時制(01,02..)
%k 數字形式的小時,24小時制(1,2,3) %l 數字形式表示小時,12小時制(1,2,3,4....)
%i 兩位數字表示分鐘(00,01,02) %S和%s 兩位數字表示秒(00,01,02...)
%W 一週中的星期名稱(Sunday...) %a 一週中的星期縮寫(Sun.,Mon.,Tues.,..)
%w 以數字表示週中的天數(0=Sunday,1=Monday....)    
%j 以3位數字表示年中的天數(001,002...) %U 以數字表示年中的第幾周,(1,2,3。。)其中Sunday爲週中第一天
%u 以數字表示年中的第幾周,(1,2,3。。)其中Monday爲週中第一天    
%T 24小時制 %r 12小時制
%p AM或PM %% 表示%
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章