Mysql中的常用函數: 1.字元串函數: (1).合併字元串 concat():// concat('M','y',"SQL",'5.5');== MySQL5.5//當傳入的參數有一個值為NULL,返回的結果值為NULL concat_ws();// 指定分隔符插入到字元串中:concat_ws ...
Mysql中的常用函數: 1.字元串函數: (1).合併字元串 concat():// concat('M','y',"SQL",'5.5');== MySQL5.5//當傳入的參數有一個值為NULL,返回的結果值為NULL concat_ws();// 指定分隔符插入到字元串中:concat_ws(":",'2017','09');==2017:09,但如果分隔符是NULL的話,結果就為NULL,參數是NULL,不影響結果 (2).比較字元串大小的函數: select strcmp(字元串1,字元串2);大於返回1,小於返回-1,等於返回0 (3).獲取字元串長度的函數: length(); // 計算空格,指的是傳入參數的長度(位元組長度),一個漢字是兩個位元組. char_length();// 傳入參數的字元數(字元長度) (4).字母大小寫轉換函數: UPPER();或者是UCASE()轉化為大寫 LOWER(); (5).查找字元串: select FIND_IN_SET(查找字元串,目標字元串集合);// 返回字元串位置的函數,目標字元串是以逗號分割的字元串集合,下標從1開始 select FIELD(查找字元串,目標字元串1,目標字元串2,...........);// 返回字元串位置的函數 LOCATE(str1,str);// 返回str中字元串str1的開始位置 POSITION(str1 IN str);// 返回str中字元串str1的開始位置 INSTR(str,str1); // 返回str中字元串str1的開始位置 ELT(n,str1,str2......,strn);// 返回第n個字元串 MAKE_SET(num,str1,str2,...strn) ;// 先將數值num轉化為二進位,然後按照二進位數從參數str1,str2,....,strn中選取相應的字元串 例子:select BIN(5) as 二進位數,MAKE_SET(5,'MYSQL','ORACLE','SQL SERVER','POSTGRESQL') as 選取後的字元串;// 結果為MYSQL,SQL SERVER (6).截取字元串函數: LEFT(str,num);// 從左邊截取,字元串是str,長度是num RIGHT(str,num);// 從右邊截取,字元串是str,長度是num SUBSTRING(str,num,len);// 字元串是str,從num位置開始,長度是len,包含num位置 MID(str,num,len);// 字元串是str,從num位置開始,長度是len,包含num位置 (7),去除字元串的首尾空格: LTRIM(str);// 去除字元串開始處空格 RTRIM(str);// 去除字元串結束處空格 TRIM(str);// 去除字元串首尾空格 (8).替換字元串函數: INSERT(str,pos,len,newstr);// str是原字元串,pos是需要替換的開始位置,len是替換的長度(根據需要來定),newstr是替換的新字元串 REPLACE(str,substr,newstr);// str是原字元串,substr是需要替換的字元串,newstr是替換substr的字元串,替換所有匹配的字元串 註意:比較以下兩個結果: select replace("THIS IS TEST STRING","IS","IS NOT");// THIS NOT IS NOT TEST STRING,不區分單詞,切記 select replace("THIS IS TEST STRING"," IS "," IS NOT ");//THIS IS NOT TEST STRING 2.數值函數: (1).獲取隨機數: RAND(); // 返回的數完全隨機 RAND(x); // x表示數字,返回的隨機數值是相同的(確定的) (2).獲取整數的函數: CEIL(x);// 上取整 FLOOR(x);// 下取整 (3).截取數值函數: TRUNCATE(x,y);// x表示要截取的數值,y表示小數點後幾位,也就是保留幾位小數,是直接捨去,而不是四捨五入. (4).四捨五入函數: ROUND(x); ROUND(x,y);// 返回數值x保留到小數點後y位 3.日期函數: (1).獲取當前日期和時間函數: now();// 當前日期和時間 locatime();// 當前日期和時間 current_timestamp();// 當前日期和時間 SYSDTAE();// 當前日期和時間 (2).當前日期: curdate();// 當前日期 current_date();// 當前日期 (3).當前時間: curtime(); current_time(); (4).各種方式顯示日期和時間: unix_timestamp(日期類型的字元串);// 將日期類型的字元串轉化為整形(秒數),UNIX格式 from_unixtime("整形");// 將整形字元串轉化為日期,普通格式 UTC_DATE();// utc日期,只有日期 UTC_TIME();// utc時間 ,只有時間 (5).獲取日期和時間各部分值: SELECT NOW() 當前日期和時間, YEAR(NOW()) 年, QUARTER(NOW()) 季度, MONTH(NOW()) 月, WEEK(NOW())星期, DAYOFMONTH(NOW()) 天, HOUR(NOW()) 小時, MINUTE(NOW()) 分, SECOND(NOW()) 秒; (6).月(參數都是日期類型的字元串): MONTH(date); MONTHNAME(date); (7).星期: week(date);// 年中第幾個星期 weekofyear(date);// 年中第幾個星期 dayname(date);// 星期,英文顯示 dayofweek(date);// 星期(不理解,用下麵的) weekday(date);// 星期,數字表示 (8).天 dayofyear(date);// 年中的第幾天 dayofmonth(date);// 月中的第幾天 (9).EXTRACT函數 EXTRACT(YEAR from NOW()); // 年 EXTRACT(month from NOW()); // 月 EXTRACT(day from NOW()); // 日 EXTRACT(hour from NOW()); // 時 EXTRACT(minutefrom NOW()); // 分 EXTRACT(second from NOW()); // 秒 (10).計算日期和時間的函數: SELECT NOW() 當前日期和時間, TO_DAYS(NOW()) 相隔天數, // 距離0000年1月1日 FROM_DAYS(TO_DAYS(NOW())) 一段時間後日期和時間, DATEDIFF(NOW(),'2000-12-01') 相隔天數; (11).與指定日期和時間操作: ADDDATE(date,n); // 計算date加上n天後的日期 SUBDATE(date,n); // 計算date減去n天後的日期 ADDDATE(d,INTERVAL expr type);// type的類型查看http://www.w3school.com.cn/sql/func_date_add.asp SUBDATE(d,INTERVAL expr type); 例子: select adddate(now(),interval '2,3' year_month ) '2年3個月後的日期'; 4.系統信息函數 (1).獲取MySQL系統信息: 使用\h SELECT VERSION() 版本號, DATABASE() 資料庫名, USER() 用戶名; (2).獲取自增長約束的最後ID值 SELECT LAST_INSERT_ID(); (3).其他函數: