Mysql中也有很多函数,主要是类型转化函数,日期函数,数值函数,字符函数,下面一一介绍。
类型转化函数
1、CONVERT( )函数
CONVERT( )函数的语法格式为:
CONVERT(value, type)
其中,type为数据类型,但是要特别注意,可以转换的数据类型是有限制的。这个类型以下值其中的一个:
- 二进制,BINARY[(N)];
- 字符型,CHAR[(N)];
- 日期:DATE;
- 时间:TIME;
- 日期时间型:DATETIME;
- 浮点数:DECIMAL;
- 整数:SIGNED[INTEGER];
- 无符号整数:UNSIGNED[INTEGER]
使用CONVERT函数将字符串转换成整数。
SELECT CONVERT('12345',SIGNED);
2、CAST( )函数
CAST( )函数的语法格式为:
CAST(value AS type)
其中,type为数据类型。
使用CAST函数将字符串转换成整数。
SELECT CAST('12345' AS signed)
日期函数
1、获取当前日期、时间的函数
使用CURDATE( )、CURTIME()函数可获取当前日期、当前时间的函数。
使用时间函数获取系统当前日期和时间。
SELECT CURDATE() AS 当前日期, CURTIME() AS 当前时间
另外,MySQL还有CURRENT_DATE、CURRENT_TIME、CURRENT_TIMESTAMP、LOCALTIME、NOW、SYSDATE等函数,可用来返回包含日期和时间的数据。
CURRENT_DATE:根据返回值所处上下文是字符串或数字,返回以'YYYY-MM-DD'或YYYYMMDD格式表示的当前日期值 ;
CURRENT_TIME:根据返回值所处上下文是字符串或数字,返回以'HH:MM:SS'或HHMMSS格式表示的当前时间值;
NOW\SYSDATE\CURRENT_TIMESTAMP\LOCALTIME:根据返回值所处上下文是字符串或数字,返回以'YYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS 格式表示的当前日期时间()
2、时间戳函数
UNIX_TIMESTAMP:返回一个Unix时间戳(从'1970-01-01 00:00:00'GMT开始的秒数,date默认值为当前时间);
FROM_UNIXTIME:将时间戳转换为'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式表示的值;
3、取日期中部分值的函数
YEAR(date):返回date的年份(范围在1000到9999);
MONTH(date):返回date的月份数值;
DAY(date):返回date的天数值;
HOUR(date):返回date的小时数(范围是0到23);
MINUTE(date):返回date的分钟数(范围是0到59);
SECOND(date):返回date的秒数(范围是0到59);
TO_DAYS(date):返回从西元0年至date的天数(不计算1582年以前);
FROM_DAYS(N):返回距西元0年N天的日期值(不计算1582年以前);
DAYOFWEEK(date):返回date是星期几(1=星期天,2=星期一,……7=星期六);
WEEKDAY(date):返回date是星期几(0=星期一,1=星期二,……6= 星期天);
DAYOFMONTH(date):返回date是一月中的第几日(在1到31范围内);
DAYOFYEAR(date):返回date是一年中的第几日(在1到366范围内));
DAYNAME(date):返回date是星期几(按英文名返回);
MONTHNAME(date):返回date是几月(按英文名返回);
QUARTER(date):返回date是一年的第几个季度;
WEEK(date,first):返回date是一年的第几周(first默认值0,first取值1表示周一是周的开始,0从周日开始)。
日期运算函数
日期运算函数要对日期时间进行加减运算,有以下几个函数:
DATE_ADD(date,INTERVAL expr type):
DATE_SUB(date,INTERVAL expr type)
ADDDATE(date,INTERVAL expr type)
SUBDATE(date,INTERVAL expr type)
其中ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词,也可以用运算符+和-进行运算。
在上面4个函数中,date是一个DATETIME或DATE值,expr对date进行加减法的一个表达式字符串,type指明表达式expr应该如何被解释。
type可取以下值:
SECOND:表示按秒运算,expr为整数值;
MINUTE 表示按分钟运算,expr为整数值;
HOUR:表示按小时运算,expr为整数值;
DAY:表示按天运算,expr为整数值;
MONTH:表示按月运算,expr为整数值;
YEAR:表示按年运算,expr为整数值
MINUTE_SECOND:表示按分钟和秒进行运算,expr为字符串,如 "MINUTES:SECONDS";
HOUR_MINUTE:表示按小时和分钟进行运算,expr为字符串,如 "HOURS:MINUTES";
DAY_HOUR:表示按天和小时进行运行,expr为字符串,如 "DAYS HOURS";YEAR_MONTH:表示按年和月进行运算,expr为字符串,如 "YEARS-MONTHS"
HOUR_SECOND:表示按小时, 分钟进行运算,expr为字符串,如 "HOURS:MINUTES:SECONDS"
DAY_MINUTE:表示按天, 小时, 分钟进行运算,expr为字符串,如 "DAYS HOURS:MINUTES"
DAY_SECOND:表示按天, 小时, 分钟, 秒进行运算,expr为字符串,如"DAYS HOURS:MINUTES:SECONDS"
例如使用时间函数计算后天的这个时间再往后推2小时的值。
后天(即当前日期增加2天)再往后推小时时,其运算字符串的“2 2”,使用DAY_HOUR类型进行运算。因此,SQL语句如下所示:
SELECT NOW() AS 当前日期时间值, DATE_ADD(NOW(),INTERVAL "2 2" DAY_HOUR) AS 运算结果
数值函数
函数 |
参数 |
说明 |
ABS |
(number) |
返回绝对值 |
CEIL |
(number) |
返回与给定参数相等或比给定参数大的最小整数 |
COS、SIN、TAN |
(number) |
返回给定角度(以弧度为单位)的三角余弦值、正弦值和正切值 |
ACOS、ASIN、ATAN |
(number) |
返回给定角度的反余弦值、反正弦值和反正切值 |
EXP |
(number) |
返回e的X乘方后的值(自然对数的底) |
FLOOR |
(number) |
返回不大于X的最大整数值 |
LN |
(number) |
返回给定参数的自然对数 |
LOG |
(base, number) |
返回给定数值的以 base 为底的对数。 |
LOG10 |
(number) |
返回X的基数为10的对数 |
MOD |
(n,m ) |
返回 n 除 m 的模。 |
PI |
() |
返回 π (pi)的值。默认的显示小数位数是7位,MySQL内部会使用完全双精度值 |
POWER |
(x , y) |
返回 x 的 y 次方。 |
RADIANS |
(number) |
返回number由度转化为弧度的值 |
RAND |
() |
返回一个0-1之间的随机浮点值 |
ROUND |
(number , length) |
返回 number,并四舍五入为指定的长度或精度。 |
SIGN |
(number) |
返回给定数值的正 (+1)、零 (0) 或负 (-1) 号。 |
SQRT |
(number) |
返回给定数值的平方根。 |
TRUNCATE |
(number , decimal-pluces) |
返回值为按decimal-pluces截断的给定数值 |
字符函数
函数 |
参数 |
说明 |
ASCII |
(string) |
返回值为字符串string的最左字符的数值 |
BIN |
(number) |
返回值为number的二进制值的字符串表示 |
CHAR |
(number,...) |
返回与所给数值参数相等的字符。 |
CONCAT |
(string1,string2) |
返回字符串连接结果。 |
INSTR |
(input_string,search_string[,n[,m]]) |
从输入字符串的第n个字符开始查找搜索字符串的第m次出现 |
LENGTH |
(string) |
返回输入字符串的字符数。 |
LOWER\LCASE |
(string) |
将输入字符串全部转换为小写字母。 |
LPAD |
(string, n [,pad_chars]) |
在输入字符串的左边填充上pad_chars指定的字符,将其拉深至n个字符长。 |
LTRIM |
(string) |
从输入字符串中删除所有前导空格,即左边的空格。 |
NLSSORT |
(string) |
对输入字符串的各个字符进行排序。 |
REPLACE |
(string , search_string [,replace_string]) |
将输入字符串中出现的所有search_string都替换为replace_string,如果不指定replace_string,则删除全部search_string |
RPAD |
(string, n [,pad_chars]) |
在输入字符串的右边填充上pad_chars指定的字符,将其拉深至n个字符长。 |
RTRIM |
(string) |
从输入字符串中删除右边的所有空格。 |
SUBSTR |
(string , start [, length]) |
返回输入字符串中从第start位开始length长的一部分。 |
UPPER |
(string) |
将输入字符串全部转换成大写字母。 |
更改NULL值
MySQL中对应SQL Server的ISNULL函数的是IFNULL函数。下面通过一个例题说明其用法。
试验MySQL中的IFNULL函数,将C2字段的所有NULL值显示为0。
SELECT c1, IFNULL(c2,0)
FROM testnull;