MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)
目錄
字串函式
1.char_length(' '):計算字串字元的長度
select char_length('abcd我');
執行結果如下:
2.length(' '):計算字串的長度。這裡需要注意的是,一個漢字長度是3。
select length('abcd我');
執行結果如下:
3.concat(' ',' '...):字串拼接
select concat('我','ni');
執行結果如下:
4.concat_WS('分隔符',' ',' '...):用指定的符號拼接
select concat_WS('-','ni','我')
執行結果如下:
5.group_concat(distinct FIELD_NAME order by FIELD_NAME[DESC]) :配合分組查詢,進行行轉列
舉例說明:比如在一張成績表中,查詢學生學了哪些課程。
select student_id,course_id from score;
這句話會將所有學生所有學的課程列出來,導致會有很多行。
如果使用group_concat,按照student_id分組,將每個學生的課程行轉列,變成一行來顯示,就會看得一目瞭然。
6.insert(s1,x,len,s2):從字串s1的x位置開始,被字串s2取代len個字元。
select insert('我愛你',2,2,'哈哈哈');
執行結果如下:
7.lower(' '):轉小寫
select lower('A我A');
執行結果如下:
8.upper(''):轉大寫
select upper('a我a');
執行結果如下:
9.left('',n):字串從最左邊開始的n個字元
select left('abcd',3);
執行結果如下:
10.right('',n):字串從最右邊開始的n個字元
select right('efgh',3);
執行結果如下:
11.mid('',n,len):從字串的第n個位置開始,取len個字元
select mid('efgh',2,2);
執行結果如下:
12.lpad(s1,len,s2):左填充
select lpad('abc',5,'cd');
執行結果如下:
13.rpad(s1,len,s2):右填充
select rpad('abc',5,'cd');
執行結果如下:
14.ltrim(''):左去空
select ltrim(' abc');
執行結果如下:
15.rtrim(''):右去空
select rtrim('abc ');
執行結果如下:
16.trim(''):兩端去空
select trim(' abc ');
執行結果如下:
17.trim(s1 from s):刪除s兩端的所有s1
select trim('ab' from 'bcdabefhab');
執行結果如下:
18.repeat('',n):讓字串重複n次
select repeat('abc',3);
執行結果如下:
19.space(n):返回由n個空格組成的字串
select concat('我愛你',space(4),'他愛她');
執行結果如下:
20.replace('1','2','3'):將字串1包含字串2的部分由引數3替代
select replace('abcd','bc','-');
執行結果如下:
21.strcmp(s1,s2):比大小,返回0,1,-1。若為-1,則s1<s2;若為1,則s1>s2;若為0,則s1=s2
select strcmp('ab','ad');
執行結果如下:
select strcmp('afce','adcd');
執行結果如下:
select strcmp('ad','ad');
執行結果如下:
22.locate('1','2'):判斷2中是否有1,有則返回其第一次出現的位置
select locate('ab','bcdabefgab');
執行結果如下:
23.reverse(''):反轉字串
select reverse('abc');
執行結果如下:
24.elt(N,'',''...):返回第N個字串。根據引數1指定的位置,提取以引數2為1起,之後的對應位置的值,若位置不存在返回null
select elt(2,'a','v','c','d');
執行結果如下:
25.field('1','2','3',...):返回2,3之後的所有字串中第一次出現與1匹配的位置,沒有返回0。
select field('ab','cd','ab');
執行結果如下:
26.find_in_set('1',',,,...'):返回1在後面很多字串(以逗號分割的字串)中能匹配上的位置,匹配不上,返回0
select find_in_set('b','abbcd,abc,b');
執行結果如下:
27.make_set(x,'1','2'...):根據引數1轉換成二進位制後的結果,保留和集合元素數量位低位值,然後逆序匹配提取子集合,1就提取,0不提取
select make_set(25,'aa','bb','cc','dd','ee');
執行結果如下:
因為25轉成二進位制為11001,將二進位制轉一下為10011,所以結果為aa,dd,ee。
28.substring_index('str','分隔符','擷取位置'):擷取字串
從左邊開始擷取到第三個逗號
select substring_index('我,你,他,她,它',',',3);
執行結果如下:
數學函式
1.abs(v NUMBER):絕對值
select abs(-1);
執行結果如下:
2.floor(v DECIMAL):去掉小數(不四捨五入)
select floor(3.456);
執行結果如下:
3.ceil(v DECIMAL):有小數就進1
select ceil(0.000001);
執行結果如下:
4.truncate(v DECIMAL,n INT):截斷(不四捨五入)
select truncate(3.35567,1);
執行結果如下:
5.round(v DECIMAL):返回離引數最近的整數,四捨五入
select round(3.56);
執行結果如下:
6.round(v DECIMAL,n INT):保留幾位小數,四捨五入
select round(3.564,1);
執行結果如下:
7.rand():返回0~1之間的隨機小數
select rand();
執行結果如下:
8.sign(v NUMBER):返回數字是否為正數還是負數。正數為1,負數為-1
select sign(3.56);
執行結果如下:
9.pi():返回圓周率的值(共7位)
select pi();
執行結果如下:
10.pow(b NUMBER,p NUMBER):冪運算
select pow(2,3);
執行結果如下:
11.sqrt(b NUMBER):開平方根
select sqrt(4);
執行結果如下:
12.exp(n NUMBER):返回e的x乘方後的值
select exp(2);
執行結果如下:
13.mod(n NUMBER,m NUMBER):n%m取餘
select mod(3,5);
執行結果如下:
14.log2(x):返回x相對於基數2的對數
select log2(16);
執行結果如下:
15.log10(x):返回x相對於基數10的對數
select log10(10);
執行結果如下:
16.radians(d NUMBER):角度轉弧度
select radians(30);
執行結果如下:
17.degree(r NUMBER):弧度轉角度
select degrees(0.5235987755982988);
執行結果如下:
日期函式
1.now():返回當前日期時間
select now();
執行結果如下:
2.curdate():返回當前日期
select curdate();
執行結果如下:
3.curtime():返回當前時間
select curtime();
執行結果如下:
4.unix_timestamp():獲取到當前日期的時間的秒數
select unix_timestamp();
執行結果如下:
5.unix_timestamp(['yyyy-MM-dd hh:mm:ss sss']):獲取到指定日期的時間的秒數
select unix_timestamp('2020-2-13');
執行結果如下:
select UTC_DATE();
執行結果如下:
6.from_unixtime(v BIGINT):返回秒數對應的日期時間
select from_unixtime(1581523200);
執行結果如下:
7.UTC_DATE():返回格式為"YYYY-MM-DD"的當前UTC日期值
select UTC_DATE();
執行結果如下:
8.UTC_TIME():返回格式為"hh:mm:ss"的當前UTC時間值
select UTC_TIME();
執行結果如下:
9.year('日期'):返回日期中的年份值,範圍是1~12
select year('2020-10-3');
執行結果如下:
10.month('日期'):返回日期中的月份值,範圍是1~12
select month('2020-10-3');
執行結果如下:
11.week('日期'):計算日期是本年的第幾個星期,範圍是0~53
select week('2020-10-3');
執行結果如下:
12.weekofyear('日期'):計算日期是本年的第幾個星期,1~53
select weekofyear('2020-10-3');
執行結果如下:
13.day('日期'):返回日期中的天數
select day('2020-10-3');
執行結果如下:
14.monthname('日期'):返回日期中的月份名稱
select monthname('2020-10-3');
執行結果如下:
15.dayname('日期'):返回日期是星期幾
select dayname('2020-10-3');
執行結果如下:
16.quarter('日期'):日期是第幾季度
select quarter('2020-10-3');
執行結果如下:
17.hour('時間'):時間的小時值
select hour(curtime());
執行結果如下:
18.minute('時間'):時間的分鐘值
select minute(curtime());
執行結果如下:
19.second('時間'):時間的秒鐘值
select second(curtime());
執行結果如下:
20.extract(type from date):從日期中提取一部分,type可以是YEAR、YEAR_MONTH、DAY_HOUR、DAY_MICROSECOND、DAY_MINUTE、DAY_SECOND
select extract(year from curtime());
執行結果如下:
21.time_to_sec('時間'):將時間轉換為秒
select time_to_sec(curtime());
執行結果如下:
22.sec_to_time(秒數):將以秒為單位的時間轉換為時分秒的格式
select sec_to_time(27524);
執行結果如下:
23.to_days('日期'):計算日期d至0000年1月1日的天數
select to_days('0001-1-1');
執行結果如下:
24.from_days(n):計算從0000年1月1日開始n天后的日期
select from_days(729669);
執行結果如下:
25.dayofyear('日期'):本年的第幾天
select dayofyear('2020-10-3');
執行結果如下:
26.dayofmonth('日期'):計算日期是本月的第幾天
select dayofmonth('2020-10-3');
執行結果如下:
27.dayofweek('日期'):本週的第幾天。1為星期日
select dayofweek('2020-10-3');
執行結果如下:
28.weekday('日期'):日期是星期幾。0為星期一
select weekday('2020-10-3');
執行結果如下:
29.datediff(d1,d2):計算d1和d2間隔的天數
select datediff('2020-10-3','2020-10-20');
執行結果如下:
30.adddate(date,'正負值' YEAR|QUARTER|YEAR_MONTH|MONTH|DAY|...)
select adddate('2020-10-3',interval 1 year);
執行結果如下:
31.adddate('日期',n):在日期後加n天后的日期
select adddate('2020-10-3',5);
執行結果如下:
32.subtime('時間',n);
select subtime('12:03:45',10);
執行結果如下:
33.date_format(now(),'%Y-%m-%d %H:%i:%s'):格式化日期時間
select date_format('2020-10-03','%Y/%m/%d');
執行結果如下:
34.time_format('時間','格式'):格式化時間
select time_format(curtime(),'%H:%i:%s');
執行結果如下:
35.計算自己的週歲
select floor(datediff(now(),'1995-10-20')/365);
執行結果如下:
36.計算本週第一天:select adddate(date,interval concat('-',dayofweek(date))+2 day);
select adddate(curdate(),interval concat('-',dayofweek(curdate()))+2 day);
執行結果如下:
37.指定日期所在季度的第一天
select concat_WS('-',year(now()),(quarter(now())-1)*3+1,'1');
執行結果如下:
系統級函式
1.if(expr,v1,v2):如果表示式expr成立,執行v1,否則執行v2。
select if(2>1,1,2);
執行結果如下:
2.ifnull(v1,v2):如果v1不為空,則顯示v1的值;否則顯示v2的值
select ifnull(null,3);
執行結果如下:
select ifnull(2,3);
執行結果如下:
3.case when expr1 then v1 [when expr2 then v2 …][else vn] end:case表示函式開始,end表示函式結束。
如果表示式expr1成立,則返回v1的值;如果表示式expr2成立,則返回v2的值。依次類推,最後遇到else時,返回vn的值。
舉例說明:按各科平均成績從低到高和及格率的百分數從高到低順序
select
course_id,avg(score) avg,sum(case when score>60 then 1 else 0 end)/count(1)*100 lv
from
score
group by
course_id
order by
avg,lv DESC;
執行結果如下:
4.case expr when e1 then v1 [when e2 then v2 …][else vn] end:case表示函式開始,end表示函式結束。
如果表示式expr取值為e1,則返回v1的值;如果表示式expr取值為e2,則返回v2的值,依次類推,最後遇到else,則返回vn的值
舉例說明:學生成績表中,按照學生ID,列出其語文數學英語成績。
select
SC.student_id 學生ID,
max(case C.cname when '語文' then SC.score else 0 end) '語文',
max(case C.cname when '數學' then SC.score else 0 end) '數學',
max(case C.cname when '英語' then SC.score else 0 end) '英語'
from
score SC
left join
course C
on
SC.course_id=C.cid
group by SC.student_id;
執行結果如下:
5.database():查詢當前所使用的資料庫
select database();
執行結果如下:
6.password(src_str):加密
select password('abc');
執行結果如下:
7.md5(src_str):單向加密
select md5('abc');
執行結果如下:
8.encode(src_str,pass_str):用引數2對引數1進行加密
select encode('abc','def');
執行結果如下:
9.decode(crypt_str,pass_str):使用引數2來為引數1解密
select decode(encode('abc','def'),'def');
執行結果如下:
聚合函式
1.min(NUMBER_FIELD_NAME):最小值
2.max(NUMBER_FIELD_NAME):最大值
3.sum(NUMBER_FIELD_NAME):求和
4.avg(NUMBER_FIELD_NAME):求平均值
5.count(1/distinct FIELD_NAME):計數
相關文章
- Oracle 函式大全(字串函式,數學函式,日期函式,邏輯運算函式,其他函式)Oracle函式字串
- 探索MySQL高階語句(數學函式、聚合函式、字串函式、日期時間函式)MySql函式字串
- MySQL(四)日期函式 NULL函式 字串函式MySql函式Null字串
- 【函式】Oracle函式系列(2)--數學函式及日期函式函式Oracle
- 【Mysql 學習】日期函式函式MySql函式
- 字元函式、數字函式和日期函式字元函式
- MySQL 聚合函式大全MySql函式
- 聚合函式與數字函式函式
- MySQL函式學習(一)-----字串函式MySql函式字串
- 【函式】ORACLE函式大全函式Oracle
- oracle函式大全-字串處理函式Oracle函式字串
- oracle 10g函式大全--聚合函式Oracle 10g函式
- MySQL 字串函式大全MySql字串函式
- Oracle聚合函式/分析函式Oracle函式
- Oracle OCP(03):字元函式、數字函式和日期函式Oracle字元函式
- SQL函式之日期函式SQL函式
- oracle 10g函式大全–日期型函式Oracle 10g函式
- oracle 10g函式大全--日期型函式Oracle 10g函式
- 字串函式之Strtok()函式字串函式
- mysql函式大全MySql函式
- mysql 自定義分析函式 least 及 日期函式MySql函式AST
- MySQL日期時間函式大全MySql函式
- MySQL 日期時間函式大全MySql函式
- 【函式式 Swift】函式式思想函式Swift
- 日期函式函式
- MySQL 數字函式大全MySql函式
- ORACLE單行函式與多行函式之四:日期函式示例Oracle函式
- python中id()函式、zip()函式、map()函式、lamda函式Python函式
- Python 擴充之特殊函式(lambda 函式,map 函式,filter 函式,reduce 函式)Python函式Filter
- Mysql 常用函式(15)- upper 函式MySql函式
- ORACLE函式介紹第三篇 著名函式之聚合函式Oracle函式
- PHP 每日一函式 — 字串函式 crypt ()PHP函式字串
- PHP 每日一函式 — 字串函式 chr ()PHP函式字串
- T-SQL——函式——字串操作函式SQL函式字串
- 第7章 IF函式 COUNTIF函式 SUMIF函式函式
- 【函式】Oracle EXTRACT()函式與to_char() 函式函式Oracle
- oracle 10g函式大全--數值型函式Oracle 10g函式
- oracle 10g函式大全--分析函式Oracle 10g函式