mysql中的内置函数
mysql內(nèi)置函數(shù)列表可以從mysql官方文檔查詢,這里僅分類簡單介紹一些可能會用到的函數(shù)。
1 數(shù)學(xué)函數(shù)
abs(x)
pi()
mod(x,y)
sqrt(x)
ceil(x)或者ceiling(x)
rand(),rand(N):返回0-1間的浮點數(shù),使用不同的seed N可以獲得不同的隨機數(shù)
round(x, D):四舍五入保留D位小數(shù),D默認為0, 可以為負數(shù), 如round(19, -1)返回20
truncate(x, D):截斷至保留D位小數(shù),D可以為負數(shù), 如trancate(19,-1)返回10
sign(x): 返回x的符號,正負零分別返回1, -1, 0
pow(x,y)或者power(x,y)
exp(x):e^x
log(x):自然對數(shù)
log10(x):以10為底的對數(shù)
radians(x):角度換弧度
degrees(x):弧度換角度
sin(x)和asin(x):
cos(x)和acos(x):
tan(x)和atan(x):
cot(x):
2 字符串函數(shù)
char_length(str):返回str所包含的字符數(shù),一個多字節(jié)字符算一個字符
length(str): 返回字符串的字節(jié)長度,如utf8中,一個漢字3字節(jié),數(shù)字和字母算一個字節(jié)
concat(s1, s1, ...): 返回連接參數(shù)產(chǎn)生的字符串
concat_ws(x, s1, s2, ...): 使用連接符x連接其他參數(shù)產(chǎn)生的字符串
INSERT(str,pos,len,newstr):返回str,其起始于pos,長度為len的子串被newstr取代。
1. 若pos不在str范圍內(nèi),則返回原字符串str
2. 若str中從pos開始的子串不足len,則將從pos開始的剩余字符用newstr取代
3. 計算pos時從1開始,若pos=3,則從第3個字符開始替換
lower(str)或者lcase(str):
upper(str)或者ucase(str):
left(s,n):返回字符串s最左邊n個字符
right(s,n): 返回字符串最右邊n個字符
lpad(s1, len, s2): 用s2在s1左邊填充至長度為len, 若s1的長度大于len,則截斷字符串s1至長度len返回
rpad(s1, len, s2):
ltrim(s):刪除s左側(cè)空格字符
rtrim(s):
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)或TRIM([remstr FROM] str):從str中刪除remstr, remstr默認為空白字符
REPEAT(str,count):返回str重復(fù)count次得到的新字符串
REPLACE(str,from_str,to_str): 將str中的from_str全部替換成to_str
SPACE(N):返回長度為N的空白字符串
STRCMP(str1,str2):若str1和str2相同,返回0, 若str1小于str2, 返回-1, 否則返回1.
SUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len), SUBSTRING(str FROM pos FOR len),MID(str,pos,len): 獲取特定位置,特定長度的子字符串
LOCATE(substr,str), LOCATE(substr,str,pos),INSTR(str,substr),POSITION(substr IN str): 返回字符串中特定子串的位置,注意這里INSTR與其他函數(shù)的參數(shù)位置是相反的
REVERSE(str)
ELT(N,str1,str2,str3,...):返回參數(shù)strN, 若N大于str參數(shù)個數(shù),則返回NULL
FIELD(str,str1,str2,str3,...): 返回str在后面的str列表中第一次出現(xiàn)的位置,若找不到str或者str為NULL, 則返回0
FIND_IN_SET(str,strlist):strlist是由','分隔的字符串,若str不在strlist或者strlist為空字符串,則返回0;若任意一個參數(shù)為NULL則返回NULL
MAKE_SET(bits,str1,str2,...): 由bits的作為位圖來選取strN參數(shù),選中的參數(shù)用','連接后返回
3 日期和時間函數(shù)
CURDATE(), CURRENT_DATE, CURRENT_DATE():用于獲取當前日期,格式為'YYYY-MM-DD'; 若+0則返回YYYYMMDD
UTC_DATE, UTC_DATE():返回當前世界標準時間
CURTIME([fsp]), CURRENT_TIME, CURRENT_TIME([fsp]): 用于獲取當前時間, 格式為'HH:MM:SS' 若+0則返回 HHMMSS
UTC_TIME, UTC_TIME([fsp])
CURRENT_TIMESTAMP, CURRENT_TIMESTAMP([fsp]), LOCALTIME, LOCALTIME([fsp]), SYSDATE([fsp]), NOW([fsp]): 用于獲取當前的時間日期,格式為'YYYY-MM-DD HH:MM:SS',若+0則返回YYYYMMDDHHMMSS
UTC_TIMESTAMP, UTC_TIMESTAMP([fsp])
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date):返回一個unix時間戳('1970-01-01 00:00:00' UTC至今或者date的秒數(shù)),這實際上是從字符串到整數(shù)的一個轉(zhuǎn)化過程
FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp,format):從時間戳返回'YYYY-MM-DD HH:MM:SS' 或者YYYYMMDDHHMMSS,加入format后根據(jù)所需的format顯示。
MONTH(date)
MONTHNAME(date)
DAYNAME(date)
DAY(date),DAYOFMONTH(date):1-31或者0
DAYOFWEEK(date):1-7==>星期天-星期六
DAYOFYEAR(date): 1-365(366)
WEEK(date[,mode]):判斷是一年的第幾周,如果1-1所在周在新的一年多于4天,則將其定為第一周;否則將其定為上一年的最后一周。mode是用來人為定義一周從星期幾開始。
WEEKOFYEAR(date):類似week(date,3),從周一開始計算一周。
QUARTER(date):返回1-4
HOUR(time):返回時間中的小時數(shù),可以大于24
MINUTE(time):
SECOND(time):
EXTRACT(unit FROM date):提取日期時間中的要素
TIME_TO_SEC(time)
SEC_TO_TIME(seconds)
TO_DAYS(date): 從第0年開始的天數(shù)
TO_SECNDS(expr):從第0年開始的秒數(shù)
ADDDATE(date,INTERVAL expr unit), ADDDATE(expr,days),DATE_ADD(date,INTERVAL expr unit)
DATE_SUB(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)
ADDTIME(expr1,expr2)
SUBTIME(expr1,expr2)
注意:時間日期的加減也可以直接用+/-來進行
date + INTERVAL expr unitdate - INTERVAL expr unit如:SELECT '2008-12-31 23:59:59' + INTERVAL 1 SECOND;##'2009-01-01 00:00:00'SELECT INTERVAL 1 DAY + '2008-12-31';##'2009-01-01'SELECT '2005-01-01' - INTERVAL 1 SECOND;##'2004-12-31 23:59:59'DATE_FORMAT(date,format):
DATEDIFF(expr1,expr2):返回相差的天數(shù)
TIMEDIFF(expr1,expr2):返回相隔的時間
4 條件判斷函數(shù)
IF(expr1,expr2,expr3):如果expr1不為0或者NULL,則返回expr2的值,否則返回expr3的值
IFNULL(expr1,expr2):如果expr1不為NULL,返回expr1,否則返回expr2
NULLIF(expr1,expr2): 如果expr1=expr2則返回NULL, 否則返回expr2
CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END
當compare_value=value時返回result
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
當condition為TRUE時返回result
5 系統(tǒng)信息函數(shù)
VERSION():返回mysql服務(wù)器的版本,是utf8編碼的字符串
CONNECTION_ID():顯示連接號(連接的線程號)
DATABASE(),SCHEMA():顯示當前使用的數(shù)據(jù)庫
SESSION_USER(), SYSTEM_USER(), USER(), CURRENT_USER, CURRENT_USER():返回當前的用戶名@主機,utf8編碼字符串
CHARSET(str)
COLLATION(str)
LAST_INSERT_ID():自動返回最后一個insert或者update查詢, 為auto_increment列設(shè)置的第一個發(fā)生的值
6 加密和壓縮函數(shù)
PASSWORD(str):這個函數(shù)的輸出與變量old_password有關(guān)。old_password 在mysql5.6中默認為0。 不同取值的效果如下表
old_password=1時, password(str)的效果與old_password(str)相同,由于其不夠安全已經(jīng)棄用(5.6.5以后)。
old_password=2時,在生成哈希密碼時會隨機加鹽。
MD5(str):計算MD5 128位校驗和,返回32位16進制數(shù)構(gòu)成的字符串,當str為NULL時返回NULL。可以用作哈希密碼
SHA1(str), SHA(str):計算160位校驗和,返回40位16進制數(shù)構(gòu)成的字符串,當str為NULL時返回NULL。
SHA2(str, hash_length):計算SHA-2系列的哈希方法(SHA-224, SHA-256, SHA-384, and SHA-512). 第一個參數(shù)為待校驗字符串,第二個參數(shù)為結(jié)果的位數(shù)(224, 256, 384, 512)
ENCRYPT(str[,salt]): 用unix crypt()來加密str. salt至少要有兩位字符,否則會返回NULL。若未指定salt參數(shù),則會隨機添加salt。
ECODE(crypt_str,pass_str):解密crypt_str, pass_str用作密碼
ENCODE(str,pass_str):用pass_str作為密碼加密str
DES_ENCRYPT(str[,{key_num|key_str}]):用Triple-DES算法編碼str, 這個函數(shù)只有在mysql配置成支持ssl時才可用。
DES_DECRYPT(crypt_str[,key_str])
AES_ENCRYPT(str,key_str[,init_vector])
AES_DECRYPT(crypt_str,key_str[,init_vector])
COMPRESS(string_to_compress):返回二進制碼
UNCOMPRESS(string_to_uncompress)
7 聚合函數(shù)
若在沒使用group by時使用聚合函數(shù),相當于把所有的行都歸于一組來進行處理。除非特殊說明,一般聚合函數(shù)會忽略掉NULL.
AVG([DISTINCT] expr): 返回expr的平均值,distinct選項用于忽略重復(fù)值
COUNT([DISTINCT] expr):返回select中expr的非0值個數(shù),返回值為bigint類型
group_concat:連接組內(nèi)的非空值,若無非空值,則返回NULL
MAX([DISTINCT] expr)
MIN([DISTINCT] expr)
SUM([DISTINCT] expr)
VAR_POP(expr)
VARIANCE(expr):同VAR_POP(expr),但是這是標準sql的一個擴展函數(shù)
VAR_SAMP(expr)
STD(expr): 這是標準sql的一個擴展函數(shù)
STDDEV(expr):這個函數(shù)是為了跟oracle兼容而設(shè)置的
STDDEV_POP(expr):這個是sql標準函數(shù)
STDDEV_SAMP(expr):樣本標準差
8 格式或類型轉(zhuǎn)化函數(shù)
FORMAT(X,D[,locale]):將數(shù)字X轉(zhuǎn)化成'#,###,###.##'格式,D為保留的小數(shù)位數(shù)
CONV(N,from_base,to_base):改變數(shù)字N的進制,返回值為該進制下的數(shù)字構(gòu)成的字符串
INET_ATON(expr):ip字符串轉(zhuǎn)數(shù)字
INET_NTOA(expr):數(shù)字轉(zhuǎn)ip字符串
CAST(expr AS type):轉(zhuǎn)換數(shù)據(jù)類型
CONVERT(expr,type), CONVERT(expr USING transcoding_name): type可以為BINARY[(N)],CHAR[(N)],DATE,DATETIME, DECIMAL[(M[,D])],DECIMAL[(M[,D])],TIME,UNSIGNED [INTEGER]等等。transcoding_name如utf8等等
總結(jié)
以上是生活随笔為你收集整理的mysql中的内置函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件测试工程师简历经验总结:软件测试工程
- 下一篇: 精选JAVA毕业设计83套——源码+论文