mysql elt_mysql - 内置函数

本文详细介绍了SQL中常用的字符串类函数与数值类函数,包括字符串处理如连接、替换、截取等操作,以及数值计算如绝对值、取余、开方等功能。通过这些函数,用户可以高效地进行数据处理和分析。

1.字符串类函数

(1) CHAR_LENGTH(str)

计算字符串字符个数

(2) CONCAT(s1,s2,...)

返回连接参数产生的字符串,一个或多个待拼接的内容,任意一个为NULL则返回值为NULL

(3) CONCAT_WS(x,s1,s2,...)

返回多个字符串拼接之后的字符串,每个字符串之间有一个x

(4) INSERT(s1,x,len,s2)

返回字符串s1,其子字符串起始于位置x,被字符串s2取代len个字符

(5) LOWER(str)和LCASE(str)、UPPER(str)和UCASE(str)

前两者将str中的字母全部转换成小写,后两者将字符串中的字母全部转换成大写

(6) LEFT(s,n)、RIGHT(s,n)

前者返回字符串s从最左边开始的n个字符,后者返回字符串s从最右边开始的n个字符

(7) LPAD(s1,len,s2)、RPAD(s1,len,s2)

前者返回s1,其左边由字符串s2填补到len字符长度,假如s1的长度大于len,则返回值被缩短至len字符;前者返回s1,其右边由字符串s2填补到len字符长度,假如s1的长度大于len,则返回值被缩短至len字符

(8) LTRIM(s)、RTRIM(s)

前者返回字符串s,其左边所有空格被删除;后者返回字符串s,其右边所有空格被删除

(9) TRIM(s)

返回字符串s删除了两边空格之后的字符串

(10) TRIM(s1 FROM s)

删除字符串s两端所有子字符串s1,未指定s1的情况下则默认删除空格

(11) REPEAT(s,n)

返回一个由重复字符串s组成的字符串,字符串s的数目等于n

(12) SPACE(n)

返回一个由n个空格组成的字符串

(13) REPLACE(s,s1,s2)

返回一个字符串,用字符串s2替代字符串s中所有的字符串s1

(14) STRCMP(s1,s2)

若s1和s2中所有的字符串都相同,则返回0;根据当前分类次序,第一个参数小于第二个则返回-1,其他情况返回1

(15) SUBSTRING(s,n,len)、MID(s,n,len)

两个函数作用相同,从字符串s中返回一个第n个字符开始、长度为len的字符串

(16) LOCATE(str1,str)、POSITION(str1 IN str)、INSTR(str,str1)

三个函数作用相同,返回子字符串str1在字符串str中的开始位置(从第几个字符开始)

(17) REVERSE(s)

将字符串s反转

(18) ELT(N,str1,str2,str3,str4,...)

返回第N个字符串

2.数值类函数

(1) ABS(x)

返回x的绝对值

(2) PI()

返回圆周率π,默认显示6位小数

(3) SQRT(x)

返回非负数的x的二次方根

(4) MOD(x,y)

返回x被y除后的余数

(5) CEIL(x)、CEILING(x)

返回不小于x的最小整数

(6) FLOOR(x)

返回不大于x的最大整数

(7) ROUND(x)、ROUND(x,y)

前者返回最接近于x的整数,即对x进行四舍五入;

后者返回最接近x的数,其值保留到小数点后面y位,若y为负值,则将保留到x到小数点左边y位

(8) SIGN(x)

返回参数x的符号,-1表示负数,0表示0,1表示正数

(9) POW(x,y)和、POWER(x,y)

返回x的y次乘方的值

(10) EXP(x)

返回e的x乘方后的值

(11) LOG(x)

返回x的自然对数,x相对于基数e的对数

(12) LOG10(x)

返回x的基数为10的对数

(13) RADIANS(x)

返回x由角度转化为弧度的值

(14) DEGREES(x)

返回x由弧度转化为角度的值

(15) SIN(x)、ASIN(x)

前者返回x的正弦,其中x为给定的弧度值;后者返回x的反正弦值,x为正弦

(16) COS(x)、ACOS(x)

前者返回x的余弦,其中x为给定的弧度值;后者返回x的反余弦值,x为余弦

(17) TAN(x)、ATAN(x)

前者返回x的正切,其中x为给定的弧度值;后者返回x的反正切值,x为正切

(18) COT(x)

返回给定弧度值x的余切

(19)取当中最大值

GREATEST(n1,n2,n3)

(20)取当中最小值

LEAST(n1,n2,n3)

3.日期时间类函数

ADDTIME (date2 ,time_interval ) //将time_interval加到date2

CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //转换时区

CURRENT_DATE ( ) //当前日期

CURRENT_TIME ( ) //当前时间

CURRENT_TIMESTAMP ( ) //当前时间戳

DATE (datetime ) //返回datetime的日期部分

DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或时间

DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式显示datetime

DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上减去一个时间

DATEDIFF (date1 ,date2 ) //两个日期差

DAY (date ) //返回日期的天

DAYNAME (date ) //英文星期

DAYOFWEEK (date ) //星期(1-7) ,1为星期天

DAYOFYEAR (date ) //一年中的第几天

EXTRACT (interval_name FROM date ) //从date中提取日期的指定部分

MAKEDATE (year ,day ) //给出年及年中的第几天,生成日期串

MAKETIME (hour ,minute ,second ) //生成时间串

MONTHNAME (date ) //英文月份名

NOW() //当前时间

SEC_TO_TIME (seconds ) //秒数转成时间

STR_TO_DATE (string ,format ) //字串转成时间,以format格式显示

TIMEDIFF (datetime1 ,datetime2 ) //两个时间差

TIME_TO_SEC (time ) //时间转秒数

WEEK (date_time [,start_of_week ]) //第几周

YEAR (datetime ) //年份

DAYOFMONTH(datetime) //月的第几天

HOUR(datetime) //小时

LAST_DAY(date) //date的月的最后日期

MICROSECOND(datetime) //微秒

MONTH(datetime) //月

MINUTE(datetime) //分返回符号,正负或0

SQRT(number2) //开平方

4.空值处理函数

(1)isnull空判断函数

isnull(expr) : 如expr为null,那么isnull()的返回值为1,否则返回值为0。

(2)NULL处理

IFNULL(expr1,expr2)

如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。

(3)IF多条件处理

表达式:IF(expr1,expr2,expr3)

满足条件expr1即条件expr1,则返回expr2,否则返回expr3

(4)空值及null处理

if(isnull(item_tax) or length(item_tax)=0,0,item_tax)

(5)COALESCE(a,b,c) 返回首个非null值

SELECT COALESCE(NULL, NULL, 1);

5.字符定位与截取

(1)INSTR(string, substring)用法

只能定位第1次出现的位置,无法定位第2次等出现位置

select instr('abcdefg','f') ;-- 结果:6

SELECT INSTR("W3Schools.com", "COM") AS MatchPosition; -- 结果:11

(2)SUBSTRING_INDEX的用法

SUBSTRING_INDEX(str,delim,count)

delim:分界符

count:分界符出现的次数

在定界符 delim 以及count 出现前,从字符串str返回自字符串。若count为正值,则返回最终定界符(从左边开始)左边的一切内容。若count为负值,则返回定界符(从右边开始)右边的一切内容。

例如:

(1)select SUBSTRING_INDEX('abcdefgfdfd','f',3)   -- 结果:abcdefgfd

(2)select SUBSTRING_INDEX('abcdefgfdfd','f',2)   -- 结果:abcdefg

(3)反方向选择

取得50的写法:

SELECT SUBSTRING_INDEX(checkid,'-',-1) FROM `check` WHERE checkid = 'c-11065-50'

取得11065:

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(checkid,'-',-2),'-',1) FROM check WHERE checkid = 'c-11065-50'

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(checkid,'-',2),'-',-1) FROM check WHERE checkid = 'c-11065-50'

(3)substring截取字符串

substring(str, pos)

substring(str, pos, length)

说明:substring(被截取字段,从第几位开始截取)

substring(被截取字段,从第几位开始截取,截取长度)

例:select substring(content,5) as abstract from my_content_t

select substring(content,5,200) as abstract from my_content_t

(注:如果位数是负数 如-5 则是从后倒数位数,到字符串结束或截取的长度)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值