msyql經常使用函數

在業務開發中,mysql其實也有不少經常使用的函數,來方便查詢數據。mysql

有的時候根據業務須要也能夠寫到存儲進程中,可是這是不建議的,由於業務一旦複雜起來存儲進程中的sql會愈來愈長,可讀性太差,後期維護起來會很難。sql

好了,開始說正題吧。數據庫

字符串相關函數:數組

concat(s1,s2,s3,...) --把傳入的參數鏈接成爲一個字符串。
   //例如,select concat('aaa','bbb','ccc'),concat('aaa',null);任何字符串與 NULL 進行鏈接的結果都將是 NULL
INSERT(str ,x,y,instr) --將字符串 str 從第 x 位置開始,y 個字符長的子串替換爲字符串 instr。
   //例如,select insert('beijing2008you',12,3,'me')
LOWER(str)和 UPPER(str) --把字符串轉換成小寫或大寫
   //例如,select lower('BEIJING');select upper('beijing');
LEFT(str,x)和 RIGHT(str,x) --分別返回字符串最左邊的 x 個字符和最右邊的 x 個字符。
   //例如,select left('qwertasd',1);select right('qwertasd',1);若是第二個參數是 NULL,那麼將不返回任何字符串。
LPAD(str,n ,pad)和 RPAD(str,n ,pad) --用字符串 pad 對 str 最左邊和最右邊進行填充,直到長度爲 n 個字符長度。
   //例如,select lpad('2008',20,'beijing');select rpad('2008',20,'beijing')
LTRIM(str)和 RTRIM(str) --去掉字符串 str 左側和右側空格。
   //例如,select ltrim('     |beijing');select rtrim('beijing|      ');
LTRIM(str)和 RTRIM(str) --去掉字符串 str 左側和右側空格。
   //例如,select ltrim('     |beijing');select rtrim('beijing|      ');
REPEAT(str,x) --返回 str 重複 x 次的結果。
   //例如,select repeat('mysql',3)
REPLACE(str,a,b) --用字符串 b 替換字符串 str 中全部出現的字符串 a。
   //例如,select replace('beijing_2012','_2012','2008');
STRCMP(s1,s2) --比較字符串 s1 和 s2 的 ASCII 碼值的大小。若是 s1 比 s2 小,那麼返回-1;若是 s1 與 s2 相等,那麼返回 0;若是 s1 比 s2 大,那麼返回 1//例如,select strcmp('a','b'),strcmp('b','b'),strcmp('c','b');
TRIM(str) --去掉目標字符串的開頭和結尾的空格。
   //例如,select trim(' $ beijing2008 $ ');
SUBSTRING(str,x,y) --返回從字符串 str 中的第 x 位置起 y 個字符長度的字串。
   //例如,select substring('beijing2008',8,4),substring('beijing2008',1,7);

數組函數:網絡

ABS(x) --返回 x 的絕對值。
   //例如,select abs(-0.8);
CEIL(x) --返回大於 x 的最大整數。
   //例如,select ceil(-0.4);select ceil(0.4);
FLOOR(x) --返回小於 x 的最大整數,和 CEIL 的用法恰好相反。
   //例如,select floor(0.4);
MOD(x,y) --返回 x/y 的模。和 x%y 的結果相同,模數和被模數任何一個爲 NULL 結果都爲 NULL。
   //例如,select MOD(15,10),MOD(1,11),MOD(NULL,10);
RAND() --返回 01 內的隨機值。每次執行結果都不同。
   //例如,select RAND(),RAND();
   //例如,select ceil(100*rand()),ceil(100*rand());
ROUND(x,y) --返回參數 x 的四捨五入的有 y 位小數的值。若是是整數,將會保留 y 位數量的 0;若是不寫 y,則默認 y 爲 0,即將 x 四捨五入後取整。適合於將全部數字保留一樣小數位的狀況。   
  //例如,select ROUND(1.1),ROUND(1.136,2),ROUND(1,2); TRUNCATE(x,y) --返回數字 x 截斷爲 y 位小數的結果。 //例如,select ROUND(1.235,2),TRUNCATE(1.235,2);

日期和時間函數:函數

CURDATE() --返回當前日期,只包含年月日。
   //例如,select CURDATE();
CURTIME() --返回當前時間,只包含時分秒。
   //例如,select CURTIME();
NOW() --返回當前的日期和時間,年月日時分秒全都包含。
   //例如,select NOW();
UNIX_TIMESTAMP(date) --返回日期 date 的 UNIX 時間戳。
   //例如,select UNIX_TIMESTAMP(now());
FROM_UNIXTIME(unixtime) --返回UNIXTIME時間戳的日期值。
   //例如,select FROM_UNIXTIME(1184134516);
WEEK(DATE)和 YEAR(DATE) --前者返回所給的日期是一年中的第幾周,後者返回所給的日期是哪一年。   
  //例如,select WEEK(now()),YEAR(now()); HOUR(time)和 MINUTE(time) --前者返回所給時間的小時,後者返回所給時間的分鐘。 //例如, select HOUR(CURTIME()),MINUTE(CURTIME()); MONTHNAME(date) --返回 date 的英文月份名稱。 //例如,select MONTHNAME(now()); DATE_FORMAT(date,fmt) --按字符串 fmt 格式化日期 date 值。 //例如 ,select DATE_FORMAT(now(),'%M,%D,%Y'); DATE_ADD(date,INTERVAL expr type) --返回與所給日期 date 相差 INTERVAL 時間段的日期。 //例如,select now() current,date_add(now(),INTERVAL 31 day) after31days,date_add(now(),INTERVAL '1_2' year_month) after_oneyear_twomonth;DATEDIFF(date1,date2) --用來計算兩個日期之間相差的天數。 //例如,select DATEDIFF('2008-08-08',now());

流程函數:加密

IF(value,t f) --若是 value 是真,返回 t;不然返回 f。
   //例如,select if(salary>2000,'high','low') from salary;
IFNULL(value1,value2) --若是 value1 不爲空返回 value1,不然返回 value2。
   //例如,select ifnull(salary,0) from salary;
CASE WHEN [value1] THEN[result1]…ELSE[default]END --若是 value1 是真,返回 result1,不然返回 default
  //例如, select case when salary<=2000 then 'low' else 'high' end from salary; CASE [expr] WHEN [value1] THEN[result1]…ELSE[default]END --若是 expr 等於 value1,返回 result1,不然返回 default
  //例如,select case salary when 1000 then 'low' when 2000 then 'mid' else 'high' end from
salary;

其餘函數:spa

DATABASE() --返回當前數據庫名。
VERSION() --返回當前數據庫版本。
USER() --返回當前登陸用戶名。
INET_ATON(IP) --返回 IP 地址的網絡字節序表示。
INET_NTOA(num) --返回網絡字節序表明的 IP 地址。
PASSWORD(str) --返回字符串 str 的加密版本,一個 41 位長的字符串。(只可用於密碼)
MD5(str) --返回字符串 str 的 MD5 值,經常使用來對應用中的數據進行加密。
相關文章
相關標籤/搜索