mysql学习笔记(三)----函数

Mysql函数

数学函数

函数名 描述 Eg
ABS(X) 绝对值 Select ABS(-2);
PI() 圆周率 Select PI();
SQRT(X) 平方根 Select sqrt(X);
MOD(X,Y) 求余 Select mod(4,3);
CEIL(X) 返回不小于X的最小整数 Select ceil(3.5);
CEILING(X) 返回不小于X的最小整数 Select ceiling(3.5);
FLOOR(X) 返回小于X的最大整数 Select floor(3.5);
RAND(X) 返回一个随机浮点数V,0<=V<=1,
若指定一个整数X则它被用作种子值,
用来产生重复的序列
Select rand(),rand(3);
ROUND(X) 返回接近与参数X的整数,对X的值进行四舍五入 Select round(4.5);
ROUND(X,Y) 返回接近与参数X的整数,对X的值进行四舍五入,
结果保留小数点后面指定Y位
Select round(232.36,-1);
TRUNCATE(X,Y) 返回接近与参数X的整数,对X的值进行四舍五入,
结果保留小数点后面指定Y位
Select truncate(1.99,1);
SIGN(X) 返回X的符号值,X的为负、零、正时返回的结果依次为-1,0,1 Select sign(-8);
POW(X,Y) 返回X的Y次方的结果值 Select pow(2,3);
POWER(X,Y) 返回X的Y次方的结果值 Select power(2,3);
EXP(X) 返回以e为低的3次方 Select exp(2);
LOG(X) 返回X的自然对数,X相对于基数e的自然对数 Select log(3),log(e);
LOG10(10) 返回X的基数为10的对数 Select Log10(10);
RADIAND(X) 将参数X由度数转化为弧度 Select radians(180);
DEGREES(X) 将参数X由弧度转化为角度 Select degrees(pi());
SIN(X) 返回X的正弦值,X为弧度值 Select sin(30);
ASIN(X) 返回X的反正弦值,即正弦为X的值,若X不在-1到1之间,则返回NULL Select Asin(30);
COS(X) 返回X的余弦,X为弧度值 Select cos(1);
ACOS(X) 返回X的反余弦 Select acos(1);
TAN(X) 返回X的正切 Select tan(0.3);
ATAN(X) 返回X的反正切 Select tan(1);
COT(X) 返回X的余切 Select cot(0.3);
Tips
ROUND

ROUND(1.38,1)保留小数点后面1一位,结果四舍五入1.4,Y为负值时,保留小数点左边相应的位数直接保存为0,不进行四舍五入。

ROUND 和 TRUNCATE 的区别

round 先四舍五入,再截取位数。

truncate 先截取位数,再四舍五入。


字符串函数

CHAR_LENGTH(str)
返回字符串字str所包含的字符个数, 一个多字节字符 算作 单字符.
select CHAR_LENGTH('date');
LENGTH(str)
返回字符串str所占的字节数
Select LENGTH("我的");
CONCAT(S1,S2,...)
返回结果为连接参数产生的字符串。

或许有一个或多个参数。如果有任何一个参数为NULL,则返回NULL。

若参数中含有任何一个二进制字符,则结果为一个二进制字符串。
Select concat("My sql",5.5,"asd ");

CONCAT_WS(X,s1,s2,...)
CONCAT_WS 代表 CONCAT with separator,是CONCAT的特殊形式。

第一个参数X是其他参数的分隔符,分隔符的位置放在要连接的两个字符之间。

如果分隔符为NULL,则结果为NULL,函数会忽略任何分隔符参数后的NULL值。
Select CONCAT_WS('-','a','b',null,'c');
INSERT(s1,x,len,s2)
INSERT(s1,x,len,s2)返回字符串s1,其字串起始于x位置和被字符串s2取代的len字符。

如果x超过字符串长度,则返回值为原始字符串。假如len的长度大于其他字符串的长度,则从位置x开始替换。

若任何一个参数为NULL,则返回值NULL。
Select insert('quest',2,4,'what') as col,
	   insert('Uqest',-1,4,'what') as col2,
	   insert('quest',3,100,'wh') as col3;
LOWER(str);
Select LOWER('BEAUTIFUL'),LOWER('Well');
UPPER(str);
Select UPPER('beautful'),UPPER('Well');
Left(s,n)、Right(s,n);
Left(s,n)返回字符串s开始的最左边n个 字符,Righr(s,n)返回字符串s最后开始的n个字符.
Select Left("我好想你,你永远不会知道。",5);

LPAD(s1,len,s2)和RPAD(s1,len,s2)
LPAD(s1,len,s2)返回字符串s1,其左边由字符串s2填充到len长度。假如s1的长度大于len,则返回值被缩短至len字符。

RPAD(s1,len,s2)返回字符串s1,其右边由字符串s2填充到len长度。假如s1的长度大于len,则返回值被缩短至len字符。
Select  LPAD('hello',4,"??"),Lpad("hello",10,"??");

Select RPAD('hello',4,"??"),RPAD("hello",10,"??");
LTRIM(s),RTRIM(s),TRIM(S)
返回字符串S,字符串左侧的空格字符或者右侧的空白字符或者首尾空白字符被删除
Select '(  book   )',CONCAT('(',RTRIM(' book '),')');
TRIM(s1 from s)--删除指定字符串的函数
TRIM(s1 from s)删除字符串s中 两端(两端开始位置) 所有的的子字符串s1。s1为可选项,在未指定情况下,删除空格。
Select TRIM('xy' from 'xyxboxyokxxyxy');
空格函数 SPACE(n) 和替换函数 REPLACE(s,s1,s2)
SPACE(n) 返回一个由 n 个人空格组成的字符串

REPLACE(s,s1,s2)使用字符串s2替换字符串s中所有的s1字符串
Select CONCAT('(',SPACE(6),')'),REPLACE('xxx.baidu.com','x','w');
SUBSTRING(s,n,len)和MID(s,n,len)
SUBSTRING(s,n,len)从字符串s返回一个长度同len的子字符串,起始于位置n。如果n是一个负值,则子串的起始于字符串s结尾的n字符,
即倒数的第n个字符

MID(s,n,len)同上.

如果len小于1 则结果始终为空字符串
Select SUBSTRING("breakfast",5),SUBSTRING("breakfast",5,3),SUBSTRING("lunch",-3),SUBSTRING("lunch",-5,3);
LOCATE(str1,str) 匹配子串开始位置的函数
LOCATE(str1,str),POSITION(str1 IN str),INSTR(str,str1) 三个函数作用相同,返回子字符串str1在字符串str中的开始位置。
Select LOCATE('ball','football'),POSITION('ball' IN 'football'),INSTR ('football','ball');
字符串逆序的函数 REVERSE(s)
REVERSE(s)将字符串s反转
Select REVERSE("HL");
返回指定位置的字符串的函数 ELT(n,s1,s2,s3,...)
如果n=1,则返回s1,依次类推,若n<1或者大于参数的数目,则返回NULL
Select ELT(2,"1","2","3"),ELT(2,"1");

日期和时间函数

%Y年 %m月 %d 日 %H:%i:%s

(未完待续)

原文地址:https://www.cnblogs.com/hlere/p/6277278.html