2025-07-08

一. 字符串函數

#CHAR_LENGTH(s)返回字符串s的字符數

SELECT CHAR_LENGTH('你好123');

#5

#LENGTH(s)返回字符串s的長度,和字符集有關

SELECT LENGTH('你好123');

#CONCAT(s1,s2,…)將字符串s1,s2等多個字符串合並為一個字符串

SELECT CONCAT('12','34');

#1234

#CONCAT_WS(x,s1,s2,…)同CONCAT(s1,s2,…)函數,但是每個字符串之間要加上x

SELECT CONCAT_WS('@','12','34');

#12@34

#INSERT(s1,x,len,s2)將字符串s2替換s1的x位置開始長度為len的字符串

SELECT INSERT('12345',1,3,'abc');

#abc45

#UPPER(s),UCAASE(S)將字符串s的所有字母變成大寫字母

SELECT UPPER('abc');

#ABC

#LOWER(s),LCASE(s) 將字符串s的所有字母變成小寫字母

SELECT LOWER('ABC');

#abc

#LEFT(s,n)返回字符串s的前n個字符

SELECT LEFT('abcde',2);

#ab

#RIGHT(s,n)返回字符串s的後n個字符

SELECT RIGHT('abcde',2);

#de

#LPAD(s1,len,s2)字符串s2來填充s1的開始處,使字符串長度達到len

SELECT LPAD('abc',5,'xx');

#xxabc

#RPAD(s1,len,s2)字符串s2來填充s1的結尾處,使字符串的長度達到len

SELECT RPAD('abc',5,'xx');

#abcxx

#LTRIM(s)去掉字符串s開始處的空格

#RTRIM(s)去掉字符串s結尾處的空格

#TRIM(s)去掉字符串s開始和結尾處的空格

#TRIM(s1 FROM s)去掉字符串s中開始處和結尾處的字符串s1

SELECT TRIM('@' FROM '@@abc@@');

#abc

#REPLACE(s,s1,s2)將字符串s2替代字符串s中的字符串s1

SELECT REPLACE('abc','a','x');

#xbc

#SUBSTRING(s,n,len)獲取從字符串s中的第n個位置開始長度為len的字符串

SELECT SUBSTRING('helloworld',6,5);

#world

二. 數學函數

#MOD(x,y)返回x除以y以後的餘數

SELECT MOD(5,2);

#1

#SQRT(x)返回x的平方根

SELECT SQRT(25);

#5

#POW(x,y).POWER(x,y)返回x的y次方

SELECT POW(2,3);

#8

#TRUNCATE(x,y)返回數值x保留到小數點後y位的值,y位之後之間舍去

SELECT TRUNCATE(1.23456,3);

#1.234

#ROUND(x,y)保留x小數點後y位的值,但截斷時要進行四舍五入

SELECT ROUND(1.23456,3);

#1.235

#CEIL(x),CEILING(x)返回大於或等於x的最小整數

SELECT CEIL(1.5);

#2

#FLOOR(x)返回小於或等於x的最大整數

SELECT FLOOR(1.5);

#1

三.時間日期函數

#CURDATE(),CURRENT_DATE()返回當前日期

SELECT CURDATE()

update mytable set last_modify_date = CURDATE() where username = 'chai';

insert into mytable (username,hiredate)values('chai',CURDATE());

#CURTIME(),CURRENT_TIME返回當前時間

SELECT CURTIME();

#NOW(),CURRENT_TIMESTAMP(),LOCALTIME(),SYSDATE(),LOCALTIMESTAMP()返回當前日期和時間

SELECT NOW();

#MONTH(d)返回日期d中的月份值,1->12

SELECT MONTH('2011-11-11 11:11:11');

#MONTHNAME(d) 返回日期當中的月份名稱,如Janyary

SELECT MONTHNAME('2011-11-11 11:11:11')

#November

#DAYOFWEEK(d)日期d今天是星期幾,1星期日,2星期一

SELECT DAYOFWEEK('2011-11-11 11:11:11')

#6

#DAYNAME(d)返回日期d是星期幾,如Monday,Tuesday

SELECT DAYNAME('2011-11-11 11:11:11')

#Friday

CURRENT_TIMESTAMP()時間戳

四. 分組函數

分組函數作用於一組數據,並對一組數據返回一個值。

可以對數值型數據使用AVG 和 SUM 函數。

可以對任意數據類型的數據使用MIN和MAX函數。

COUNT(*)返回表中記錄總數,適用於任意數據類型。

COUNT(expr) 返回expr不為空的記錄總數。

可以使用GROUP BY子句將表中的數據分成若幹組

在SELECT列表中所有未包含在組函數中的列都應該包含在GROUP BY 子句中。

包含在GROUP BY子句中的列不必包含在SELECT列表中

不能在 WHERE 子句中使用組函數。可以在 HAVING 子句中使用組函數。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *