常用函數(shù)
1尽纽、字符串函數(shù)
2垒拢、數(shù)值函數(shù)
3、日期和時間函數(shù)
字符串函數(shù)
1荣恐、合并字符串函數(shù)
(1)CONCAT(s1,s2,s3,···)——返回將s1液斜,s2···合并后的數(shù)據(jù),若其中一個參數(shù)為null叠穆,則返回null少漆。
(2)CONCAT_WS(sep,s1,s2,s3,···)——sep為分隔符參數(shù),返回將s1硼被,s2···合并后的數(shù)據(jù)示损,且每個參數(shù)間由sep分割開,若其中一個參數(shù)為null嚷硫,則返回null检访。若sep為null,則返回null仔掸,其他參數(shù)為null不影響脆贵,分隔符會忽略值為null的參數(shù)。
舉例:CONCAT_WS('/','s1',null,'s3')——返回s1/s3
(3)GROUP_CONCAT([DISTINCT] 要連接的字段 [ORDER BY 排序字段 ASC|DESC] [SEPARATOR '分隔符'])——將GROUP BY 產(chǎn)生的同一個分組中的值連接起來起暮,返回一個字符串結(jié)果卖氨。通過DISTINCT可以排除重復(fù)值,ORDER BY可以進行排序鞋怀,可以用SEPARATOR添加一個分隔符双泪。若不用[SEPARATOR '分隔符']則默認分隔符為逗號(‘持搜,’)密似。
舉例:GROUP_CONCAT(DISTINCT id ORDER BY id DESC SEPARATOR '_')——將對應(yīng)id數(shù)值按遞減排序并用‘_’連接起來
2、比較字符串函數(shù)
STRCMP(s1,s2)——若s1>s2則返回1葫盼,若s1<s2則返回-1残腌,若s1=s2則返回0。
3、獲取字符串長度函數(shù)
(1)LENGTH(s)——獲取字節(jié)數(shù)長度
(2)CHAR_LENGTH(s)——獲取字符數(shù)長度
4抛猫、字母大小寫轉(zhuǎn)換函數(shù)
(1)轉(zhuǎn)換為大寫:UPPER(s)或UCASE(s)
(2)轉(zhuǎn)換為小寫:LOWER(s)或LCASE(s)
5蟆盹、查找字符串函數(shù)
(1)FIND_IN_SET(s1,s2)——返回在s2中第一個與s1相匹配的字符串的位置,s2中包含若干個用逗號隔開的字符串闺金。沒有則返回0逾滥。
舉例:
FIND_IN_SET('b','a,b,c,b')——返回2
FIND_IN_SET('b','abcb')——返回0
(2)FIELD(s,s1,s2,···)——返回第一個與s相匹配的字符串的位置。沒有則返回0败匹。
舉例:FIELD('b','a','b','c','b')——返回2
(3)LOCATE(s1,s)寨昙、POSITION(s1 IN s)、INSTR(s,s1)——返回第一個與子字符串相匹配的開始位置(s1即子字符串)掀亩。沒有則返回0舔哪。
舉例:
LOCATE('abc','adabsabcsabc')——返回6
POSITION('abc' IN 'adabsabcsabc')——返回6
INSTR('adabsabcsabc','abc')——返回6
(4)ELT(num,s1,s2,s3···)——返回指定位置的字符串。
舉例:ELT(2,'a','b','c')——返回b
6槽棍、截取字符串函數(shù)
(1)LEFT(s,len)——截取s中從左開始數(shù)捉蚤,長度為len的字符串。
舉例:
LEFT('abc',2)——返回ab
LEFT('abc',4)——返回abc
(2)RIGHT(s,len)——截取s中從右開始數(shù)炼七,長度為len的字符串缆巧。
舉例:RIGHT('abc',2)——返回bc
(3)SUBSTRING(s,num,len)、MID(s,num,len)——截取s中從第num個位置開始數(shù)豌拙,長度為len的字符串盅蝗。
舉例:
SUBSTRING('abcde',2,3)——返回bcd
MID('abcde',2,3)——返回bcd
7、去除字符串首尾空格函數(shù)
(1)LTRIM(s)——去除s首空格
(2)RTRIM(s)——去除s尾空格
(3)TRIM(s)——去除s首尾空格
8姆蘸、替換字符串函數(shù)
(1)INSERT(s,pos,len,news)——s為原始字符串墩莫,pos為需要替換的起始位置,len表示需要被替換的長度逞敷,news表示用來替換原字符串的新字符串狂秦。
!注:當len超過剩余長度時會替換剩余的字符串推捐;當pos剛好比原字符串長度大1時裂问,會把新字符串加到末尾;當pos比原字符串長度大2以上時牛柒,字符串不變堪簿;當pos為0時,字符串不變皮壁;當len為0時椭更,相當于在pos位置插入新字符串。
舉例:
INSERT('abcde',2,3,'x')——返回axe
INSERT('abcde',2,5,'x')——返回ax
INSERT('abcde',6,3,'x')——返回abcdex
INSERT('abcde',7,3,'x')——返回abcde
INSERT('abcde',0,3,'x')——返回abcde
INSERT('abcde',3,0,'x')——返回abxcde
(2)REPLACE(s,froms,tos)——將s中的froms子字符串用字符串tos替換掉蛾魄。
虑瀑!注:若這個子字符串不在原字符串中湿滓,則字符串不變。
舉例:
REPLACE('abcde','bcd','x')——返回axe
REPLACE('abcde','f','x')——返回abcde
數(shù)值函數(shù)
1舌狗、ABS(x)——返回x的絕對值
2叽奥、CEIL(x)——返回大于等于x的最小整數(shù)
3、FLOOR(x)——返回小于等于x的最大整數(shù)
4痛侍、MOD(x,y)——返回x/y的模
5朝氓、RAND()——返回0~1的隨機值(每次執(zhí)行結(jié)果都不一樣);
RAND(x)——返回0~1的隨機值(只要x相同主届,每次執(zhí)行結(jié)果都一樣)
6膀篮、ROUND(x)——返回x經(jīng)過四舍五入的整數(shù)值(只看小數(shù)點后一位);
ROUND(x,y)——返回x經(jīng)過四舍五入的值岂膳,保留小數(shù)點后y位小數(shù)(只看第y+1位)
7誓竿、TRUNCATE(x,y)——返回x保留小數(shù)點后y位小數(shù)的值
日期和時間函數(shù)
1、獲取當前日期谈截、時間
NOW()筷屡,CURRENT_TIMESTAMP(),LOCALTIME()簸喂,SYSDATE()這四個函數(shù)實現(xiàn)效果一樣毙死。
2、只獲取當前日期
CURDATE()喻鳄,CURRENT_DATE()這兩個函數(shù)實現(xiàn)效果一樣扼倘。
3、只獲取當前時間
CURTIME()除呵,CURRENT_TIME()這兩個函數(shù)實現(xiàn)效果一樣再菊。
4、獲取當前日期颜曾、時間中各部分值
(1)YEAR(NOW())——返回當前日期中的年份
(2)QUARTER(NOW())——返回當前日期中的季度數(shù)
(3)MONTH(NOW())——返回當前日期中的月份
(4)WEEK(NOW())——返回當前日期中的周數(shù)
(5)DAY(NOW())纠拔、DAYOFMONTH(NOW())——返回當前日期中的天數(shù)
(6)HOUR(NOW())——返回當前時間中的小時
(7)MINUTE(NOW())——返回當前時間中的分鐘
(8)SECOND(NOW())——返回當前時間中的秒
(9)EXTRACT(type FROM date)——返回date中type對應(yīng)的值,比如:EXTRACT(YEAR FROM NOW())——返回當前日期中的年份
5泛豪、計算日期稠诲、時間的函數(shù)
(1)TO_DAYS(date)——計算從默認時間(0000年1月1日)到date的天數(shù),date至少精確到日诡曙。舉例:TO_DAYS('0000-01-02')——返回2
(2)FROM_DAYS(num)——返回從默認時間經(jīng)過了num天的日期臀叙。舉例:FROM_DAYS(366)——返回0001-01-01
!注:當num小于等于365時价卤,返回的都是0000-00-00
(3)DATEDIFF(date1,date2)——兩個日期相隔的天數(shù)(date1-date2)劝萤,date至少精確到日。舉例:DATEDIFF('2020-02-09','2020-02-10')——返回-1
(4)ADDDATE(date,num)——返回從date加上num天的日期荠雕,date至少精確到日稳其。
(5)SUBDATE(date,num)——返回從date減去num天的日期,date至少精確到日炸卑。
(6)ADDDATE(date,INTERVAL expr type)——返回從date加上一段時間的日期既鞠,expr決定時間長度,type決定時間類型(年月日時分秒)盖文,date至少精確到日嘱蛋。舉例:ADDDATE('2020-02-09',INTERVAL 2 DAY)——返回2020-02-11
(7)SUBDATE(date,INTERVAL expr type)——返回從date減去一段時間的日期,expr決定時間長度五续,type決定時間類型(年月日時分秒)洒敏,date至少精確到日。舉例:SELECT SUBDATE('2020-02-09',INTERVAL 2 DAY)——返回2020-02-07
(8)ADDTIME(time,n)——返回時間參數(shù)time加上n秒后的時間
舉例:
ADDTIME('14:14:14',2)——返回14:14:16
ADDTIME('14:14',2)——返回14:14:02
ADDTIME('14',2)——返回00:00:16
(9)SUBTIME(time,n)——返回時間參數(shù)time減去n秒后的時間