MySQL 教程(三)函数
文章目录
- 一、日期计算函数
- (1)YEAR(date);获取年份
- (2)MONTH(date);获取月份
- (3)MONTHNAME(date);获取月份对应的英文名
- (4)DAYOFWEEK(date);获取指定日期对应的一周的索引位置值
- (5)DAYNAME(date);获取指定曰期对应的星期几的英文名称
- (6)DAYOFYEAR(date);获取指定曰期是一年中的第几天,返回值范围是1~366
- (7)WEEK(date);获取指定日期是一年中的第几周,返回值的范围是否为 0〜52 或 1〜53
- (8)CURDATE()、CURRENT_DATE();获取当前日期
- (9)CURTIME() 和 CURRENT_TIME();返回当前系统的时间值
- (10)NOW() 和 SYSDATE();返回当前系统的日期和时间值
- (11)UNIX_TIMESTAMP();返回一个无符号整数类型的 UNIX 时间戳('1970-01-01 00:00:00'GMT之后的秒数)。
- (12)FROM_UNIXTIME();将 UNIX 时间戳转换为时间格式,与UNIX_TIMESTAMP互为反函数
- (13)DAYOFMONTH(date);获取指定日期是一个月中是第几天,返回值范围是1~31
- (14)TIME_TO_SEC(time);将时间参数转换为秒数
- (15)SEC_TO_TIME();将秒数转换为时间,与TIME_TO_SEC 互为反函数
- (16)DATE_ADD(date,INTERVAL expr type) 和 ADDDATE(date,INTERVAL expr type);执行日期的加运算。
- (17)DATE_SUB(date,INTERVAL expr type) 和 SUBDATE(date,INTERVAL expr type);执行日期的减法运算
- (18)ADDTIME(time,expr) ;执行时间的加法运算。
- (19)SUBTIME(time,expr) ;执行时间的减法运算。
- (20)DATEDIFF(date1,date2) ;返回起始时间 date1 和结束时间 date2 之间的天数。
- (21)DATE_FORMAT(date,format) ;根据 format 指定的格式显示 date 值。
- (22) WEEKDAY(d) ;返回 d 对应的工作日索引。0 表示周一,1 表示周二,……,6 表示周日。
- 二、 字符串函数
- (1)RIGHT(s,n) ; 截取字符串s右面的N个字符
- (2) LENGTH(str) ;函数的返回值为字符串的字节长度
- (3)CONCAT(sl,s2,...) ; 连接字符串
- (4) INSERT(s1,x,len,s2);替换字符串,将字符串s1的第x至len个字符长度的字符替换为s2。
- (5)LOWER(str) ;可以将字符串 str 中的字母字符全部转换成小写。
- (6)UPPER(str) ;可以将字符串 str 中的字母字符全部转换成大写。
- (7)LEFT(s,n) ;返回字符串 s 最左边的 n 个字符。
- (8)TRIM(s) ;删除空格函数
- (9)REPLACE(s,s1,s2) ;替换函数,将字符串s中所有s1字符全部换为s2。
- (10)SUBSTRING(s,n,len) ;截取字符串,将字符串从n处截取,截len位,初始位为1。
- (11) REVERSE(s) ;将字符串 s顺序反转
- (12)ASCII(str);返回字符串str最左字符的数值。
- (13)BIN(N);将N转换为对应的字符串类型的二进制值,N为BIGINT数字
- (14)BIT_LENGTH(str);返回值为二进制的字符串str bit长度。
- (15)CHAR(N,... [USING charset]);每个参数N被视为一个整数,返回一个包含这些整数的代码值所给出的字符的字符串。NULL值被省略。
- (16)CHAR_LENGTH(str),CHARACTER_LENGTH(str);返回值为字符串str 的长度,长度的单位为字符。一个多字节字符算作一个单字符。
- (17)COMPRESS(string_to_compress);压缩一个字符串。
- (18)CONCAT_WS(separator,str1,str2,...);用指定分隔符将字符串们隔开并拼接成完整字符串
- (19)CONV(N,from_base,to_base);不同数基间转换数字。
- (20)ELT(N,str1,str2,str3,...);若N = 1,则返回值为 str1 ,若N = 2,则返回值为 str2 ,以此类推。
- (21)EXPORT_SET(bits,on,off[,separator[,number_of_bits]]);将第一个参数(即整数)转换为二进制数字,该字符串将显示位数
- (22)FIELD(str,str1,str2,str3,...);在str1, str2, str3,……列表中找和str同等的指数。在找不到str 的情况下,返回值为 0 。
- (23)FIND_IN_SET(str,strlist);若字符串str 在字符串列表strlist 中, 则返回值的范围在 1 到 N 之间。
- (24)FORMAT(X,D);格式化小数
- (25)HEX(x);返回十六进制值字符串
- (26)INSTR(str,substr);返回字符串 str 中子字符串的第一个出现位置。
- (27)LCASE(str);变小写,同 LOWER();
- (28)LOAD_FILE(file_name);读取文件并将这一文件按照字符串的格式返回。
- (29)LOCATE(substr,str) , LOCATE(substr,str,pos);返回字符串 str中子字符串substr的第一个出现位置;返回字符串 str中子字符串substr的第一个出现位置, 从pos位开始检索。
- (30)LPAD(str,len,padstr);在str最左侧填充padstr至整个字符长度为len,若str长度>len,将缩短字符。
- (31)LTRIM(str);将字符串左侧空格删除
- (32)MAKE_SET(bits,str1,str2,...);返回一个设定值 (一个包含被‘,’号分开的字字符串的字符串) ,由在bits 组中具有相应的比特的字符串组成。str1 对应比特 0, str2 对应比特1,以此类推。str1, str2, ...中的 NULL值不会被添加到结果中。
- (33)MID(str,pos,len);分割字符串SUBSTRING(str,pos,len)的同义词。
- (34)OCT(N);返回一个 N的八进制值的字符串表示
- (35)OCTET_LENGTH(str);获取长度,LENGTH()的同义词。
- (36)ORD(str);若字符串str 的最左字符是一个多字节字符,则返回该字符的代码
- (37)POSITION(substr IN str); LOCATE(substr,str)同义词。
- (38)QUOTE(str);引证一个字符串,由此产生一个在SQL语句中可用作完全转义数据值的结果。
- (39)REPEAT(str,count);返回一个由重复的字符串str 组成的字符串,字符串str的数目等于count 。
- (40)RPAD(str,len,padstr);返回字符串str, 其右边被字符串 padstr填补至len 字符长度。假如字符串str 的长度大于 len,则返回值被缩短到与 len 字符相同长度。
- (41)RTRIM(str);返回字符串 str ,结尾空格字符被删去。
- (42)SOUNDEX(str);从str返回一个soundex字符串。
- (44)expr1 SOUNDS LIKE expr2;相当于SOUNDEX(expr1) = SOUNDEX(expr2)。
- (45)SPACE(N);返回一个由N 间隔符号组成的字符串。
- (46)SUBSTRING_INDEX(str,delim,count);在定界符 delim 以及count 出现前,从字符串str返回自字符串。
- (47)UCASE(str);UCASE()是UPPER()的同义词。
- (48)UNHEX(str);执行从HEX(str)的反向操作。
- 三、 数值类型函数
- (1)ABS(x);绝对值函数
- (2)SQRT(x) ;返回非负数 x 的二次方根。
- (3)MOD(x,y);求余数函数,返回x被y除后的余数。
- (4)CEIL(x) 和 CEILING(x) ;取整函数,返回值转化为一个 BIGINT。
- (5)SELECT CEIL(-2.5),CEILING(2.5);返回不小于参数的最小整数,向上取整
- (6)FLOOR(x) ;返回小于 x 的最大整数值。
- (7)RAND() ; 0 ~ 1 之间的随机数。
- (8)ROUND(); 对所传参数进行四舍五入
- (9)SIGN(x); 返回参数正负,x 的值为负、零和正时返回结果依次为 -1、0 和 1。
- (10)POW(x,y) 和 POWER(x,y);用于计算 x 的 y 次方
- (11)SIN(x) ;返回 x 的正弦值,其中 x 为弧度值。
- (12)ASIN(x) ;返回 x 的反正弦值,若 x 不在 -1 到 1 的范围之内,则返回 NULL。
- (13)COS(x) ;返回 x 的余弦值,x 为弧度值。
- (14)ACOS(x) ;反余弦函数 ,x 值的范围必须在 -1 和 1 之间,否则返回 NULL。
- (15)TAN(x) ;正切函数 ,返回 x 的正切值,x 为给定的弧度值。
- (16)ATAN(x) ;返回 x 的反正切值,正切为 x 的值。
- (17) COT(x) ;返回 x 的余切值,x 是给定的弧度值。
- 四、 控制流程函数
- (1)IF(expr,v1,v2);如果expr判断结果为true,则返回v1,否则返回v2。
- (2)IFNULL(v1,v2);如果v1不是 NULL,返回第一个参数; 否则,返回第二个参数。
- (3)CASE WHEN
- (4)NULLIF(expr1,expr2);如果expr1 = expr2,返回null,否则返回expr1.
- 系列博客
一、日期计算函数
(1)YEAR(date);获取年份
select YEAR(maintenance_date) from tl_device_info
(2)MONTH(date);获取月份
select MONTH(maintenance_date) from tl_device_info
(3)MONTHNAME(date);获取月份对应的英文名
select MONTHNAME(maintenance_date) from tl_device_info
(4)DAYOFWEEK(date);获取指定日期对应的一周的索引位置值
SELECT DAYOFWEEK('2017-12-15');
(5)DAYNAME(date);获取指定曰期对应的星期几的英文名称
SELECT DAYNAME('2017-12-15');
(6)DAYOFYEAR(date);获取指定曰期是一年中的第几天,返回值范围是1~366
SELECT DAYOFYEAR('2022-08-01');
(7)WEEK(date);获取指定日期是一年中的第几周,返回值的范围是否为 0〜52 或 1〜53
SELECT week('2022-08-01');
(8)CURDATE()、CURRENT_DATE();获取当前日期
两个函数返回结果相同
select CURDATE()
select CURRENT_DATE()
(9)CURTIME() 和 CURRENT_TIME();返回当前系统的时间值
select CURTIME()
select CURRENT_TIME()
(10)NOW() 和 SYSDATE();返回当前系统的日期和时间值
select NOW()
select SYSDATE()
(11)UNIX_TIMESTAMP();返回一个无符号整数类型的 UNIX 时间戳('1970-01-01 00:00:00’GMT之后的秒数)。
select UNIX_TIMESTAMP('2022-08-30 13:38:58')
(12)FROM_UNIXTIME();将 UNIX 时间戳转换为时间格式,与UNIX_TIMESTAMP互为反函数
select FROM_UNIXTIME(1661837938);
(13)DAYOFMONTH(date);获取指定日期是一个月中是第几天,返回值范围是1~31
select DAYOFMONTH('2022-08-30')
(14)TIME_TO_SEC(time);将时间参数转换为秒数
select TIME_TO_SEC('00:01:02')
(15)SEC_TO_TIME();将秒数转换为时间,与TIME_TO_SEC 互为反函数
select SEC_TO_TIME('62')
(16)DATE_ADD(date,INTERVAL expr type) 和 ADDDATE(date,INTERVAL expr type);执行日期的加运算。
参数说明:
- date:DATE或DATETIME 的起始值。
- INTERVAL :固定值。
- expr:表达式,指定从起始日期添加/减去的间隔值,如果是负值,用“-”开头。
- type:被解释的方式
SELECT DATE_ADD('2018-01-02',INTERVAL 31 DAY) AS C1,ADDDATE('2018-01-02',INTERVAL 31 DAY) AS C2,DATE_ADD('2018-01-01 00:01:00',INTERVAL '0 0:1:1' DAY_SECOND) AS C3;
(17)DATE_SUB(date,INTERVAL expr type) 和 SUBDATE(date,INTERVAL expr type);执行日期的减法运算
参数说明:
- date:DATE或DATETIME 的起始值。
- INTERVAL :固定值。
- expr:表达式,指定从起始日期添加/减去的间隔值,如果是负值,用“-”开头。
- type:是 expr 可解析的间隔单位,例如 DAY,HOUR 等
SELECT DATE_SUB('2018-01-02',INTERVAL 31 DAY) AS C1,SUBDATE('2018-01-02',INTERVAL 31 DAY) AS C2,DATE_SUB('2018-01-01 00:01:00',INTERVAL '0 0:1:1' DAY_SECOND) AS C3;
(18)ADDTIME(time,expr) ;执行时间的加法运算。
SELECT ADDTIME('2018-10-31 23:59:59','0:1:1'),ADDTIME('10:30:59','5:10:37');
(19)SUBTIME(time,expr) ;执行时间的减法运算。
SELECT SUBTIME('2018-10-31 23:59:59','0:1:1'),SUBTIME('10:30:59','5:12:37');
(20)DATEDIFF(date1,date2) ;返回起始时间 date1 和结束时间 date2 之间的天数。
SELECT DATEDIFF('2017-11-30','2017-11-29') AS COL1,DATEDIFF('2017-11-30','2017-12-15') AS col2;
(21)DATE_FORMAT(date,format) ;根据 format 指定的格式显示 date 值。
format值:
SELECT DATE_FORMAT('2017-11-15 21:45:00','%W %M %D %Y') AS col1,DATE_FORMAT('2017-11-15 21:45:00','%h:i% %p %M %D %Y') AS col2;
(22) WEEKDAY(d) ;返回 d 对应的工作日索引。0 表示周一,1 表示周二,……,6 表示周日。
SELECT WEEKDAY('2017-12-15');
二、 字符串函数
对于在字符串位置操作的函数,第一个位置的编号为 1。
(1)RIGHT(s,n) ; 截取字符串s右面的N个字符
select RIGHT('hello world',3)
(2) LENGTH(str) ;函数的返回值为字符串的字节长度
使用 uft8(UNICODE 的一种变长字符编码,又称万国码)编码字符集时,一个汉字是 3 个字节,一个数字或字母是一个字节。
SELECT LENGTH('hello world'),LENGTH('你好'),LENGTH('2244');
(3)CONCAT(sl,s2,…) ; 连接字符串
若有任何一个参数为 NULL,则返回值为 NULL。若所有参数均为非二进制字符串,则结果为非二进制字符串。若自变量中含有任一二进制字符串,则结果为一个二进制字符串。
一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col)
SELECT CONCAT('MySQL','5.7'),CONCAT('MySQL',NULL);
(4) INSERT(s1,x,len,s2);替换字符串,将字符串s1的第x至len个字符长度的字符替换为s2。
SELECT INSERT('Football',2,4,'Play') AS col1,INSERT('Football',-1,4,'Play') AS col2,INSERT('Football',3,20,'Play') AS col3;
(5)LOWER(str) ;可以将字符串 str 中的字母字符全部转换成小写。
SELECT LOWER('BLUE'),LOWER('Blue');
(6)UPPER(str) ;可以将字符串 str 中的字母字符全部转换成大写。
SELECT UPPER('green'),UPPER('Green');
(7)LEFT(s,n) ;返回字符串 s 最左边的 n 个字符。
SELECT LEFT('MySQL',2);
(8)TRIM(s) ;删除空格函数
只能删除字符串两侧的空格,字符串内部空格无法删除
SELECT '[ m ob ile ]',CONCAT('[',TRIM(' mo bi le '),']');
(9)REPLACE(s,s1,s2) ;替换函数,将字符串s中所有s1字符全部换为s2。
SELECT REPLACE('aaa.mysql.com','a','w');
(10)SUBSTRING(s,n,len) ;截取字符串,将字符串从n处截取,截len位,初始位为1。
SELECT substring('hello world',2,5);
(11) REVERSE(s) ;将字符串 s顺序反转
SELECT REVERSE('hello');
(12)ASCII(str);返回字符串str最左字符的数值。
如果str为空字符串,返回0;str为null,返回null;ASCII()用于从0~255的数值字符。
SELECT ASCII(1),ASCII('1'),ASCII('str'),ASCII('string'),ASCII('String');
(13)BIN(N);将N转换为对应的字符串类型的二进制值,N为BIGINT数字
等同于CONV(N,10,2)
,如果N为null,返回null。
SELECT BIN(2),BIN(3),BIN(12);
(14)BIT_LENGTH(str);返回值为二进制的字符串str bit长度。
SELECT BIT_LENGTH('text'),BIT_LENGTH('t'),BIT_LENGTH('a')
(15)CHAR(N,… [USING charset]);每个参数N被视为一个整数,返回一个包含这些整数的代码值所给出的字符的字符串。NULL值被省略。
SELECT CHAR(77,121,83,81,76),CHAR(77,77.3,'77.3');
CHAR()的返回值为一个二进制字符串。可选择使用USING语句产生一个给出的字符集中的字符串:
SELECT CHARSET(CHAR(0x65)), CHARSET(CHAR(0x65 USING utf8));
(16)CHAR_LENGTH(str),CHARACTER_LENGTH(str);返回值为字符串str 的长度,长度的单位为字符。一个多字节字符算作一个单字符。
SELECT LENGTH('ss成'), CHAR_LENGTH('ss成'),CHARACTER_LENGTH('ss成');
(17)COMPRESS(string_to_compress);压缩一个字符串。
这个函数要求 MySQL已经用一个诸如zlib的压缩库压缩过。 否则,返回值始终是NULL。UNCOMPRESS() 可将压缩过的字符串进行解压缩。
压缩后的字符串的内容按照以下方式存储:
- 空字符串按照空字符串存储。
- 非空字符串未压缩字符串的四字节长度进行存储(首先为低字节),后面是压缩字符串。如果字符串以空格结尾,就会在后加一个"."号,以防止当结果值是存储在CHAR或VARCHAR类型的字段列时,出现自动把结尾空格去掉的现象。(不推荐使用 CHAR 或VARCHAR 来存储压缩字符串。最好使用一个 BLOB 列代替)。
(18)CONCAT_WS(separator,str1,str2,…);用指定分隔符将字符串们隔开并拼接成完整字符串
CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。
第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。
CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。
SELECT CONCAT_WS(',',device_number,NULL,device_name) from tl_device_info;
(19)CONV(N,from_base,to_base);不同数基间转换数字。
返回值为数字的N字符串表示,由from_base基转化为 to_base 基。
如有任意一个参数为NULL,则返回值为 NULL。自变量 N 被理解为一个整数,但是可以被指定为一个整数或字符串。最小基数为 2 ,而最大基数则为 36。
If to_base 是一个负数,则 N 被看作一个带符号数。否则, N 被看作无符号数。 CONV() 的运行精确度为 64比特。
SELECT CONV(-17,10,-18), CONV('a',16,2);
(20)ELT(N,str1,str2,str3,…);若N = 1,则返回值为 str1 ,若N = 2,则返回值为 str2 ,以此类推。
若N 小于1或大于参数的数目,则返回值为 NULL 。
SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo'), ELT(4, 'ej', 'Heja', 'hej', 'foo');
(21)EXPORT_SET(bits,on,off[,separator[,number_of_bits]]);将第一个参数(即整数)转换为二进制数字,该字符串将显示位数
如果二进制数字为1,则返回“on”,如果二进制数字为0,则返回“off”。
其中对于bits值中的每个位组,可以得到一个 on 字符串,而对于每个清零比特位,可以得到一个off 字符串。bits 中的比特值按照从右到左的顺序接受检验 (由低位比特到高位比特)。字符串被分隔字符串分开(默认为逗号‘,’),按照从左到右的顺序被添加到结果中。number_of_bits 会给出被检验的二进制位数 (默认为 64)。
SELECT EXPORT_SET(5,'Y','N',',',4),EXPORT_SET(6,'1','0',',',10);
(22)FIELD(str,str1,str2,str3,…);在str1, str2, str3,……列表中找和str同等的指数。在找不到str 的情况下,返回值为 0 。
如果所有对于FIELD() 的参数均为字符串,则所有参数均按照字符串进行比较。如果所有的参数均为数字,则按照数字进行比较。否则,参数按照双倍进行比较。
如果str 为NULL,则返回值为0 ,原因是NULL不能同任何值进行同等比较。FIELD() 是ELT()的补数。
SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo'),FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
(23)FIND_IN_SET(str,strlist);若字符串str 在字符串列表strlist 中, 则返回值的范围在 1 到 N 之间。
SELECT FIND_IN_SET('b','a,b,c,d');
(24)FORMAT(X,D);格式化小数
将number X设置为格式 ‘#,###,###.##’, 以四舍五入的方式保留到小数点后D位, 而返回结果为一个字符串。
SELECT FORMAT('3','1'),FORMAT(3,'2'),FORMAT(3,3),FORMAT(3.598,2);
(25)HEX(x);返回十六进制值字符串
SELECT HEX(255), HEX('abc'),0x616263;
(26)INSTR(str,substr);返回字符串 str 中子字符串的第一个出现位置。
SELECT INSTR('foobarbar', 'bar');
(27)LCASE(str);变小写,同 LOWER();
select LCASE('dfEEElh')
(28)LOAD_FILE(file_name);读取文件并将这一文件按照字符串的格式返回。
文件的位置必须在服务器上,你必须为文件制定路径全名,而且你还必须拥有FILE 特许权。文件必须可读取,文件容量必须小于 max_allowed_packet字节。
若文件不存在,或因不满足上述条件而不能被读取, 则函数返回值为 NULL。
UPDATE tbl_name
SET blob_column=LOAD_FILE('/tmp/picture')
WHERE id=1;
(29)LOCATE(substr,str) , LOCATE(substr,str,pos);返回字符串 str中子字符串substr的第一个出现位置;返回字符串 str中子字符串substr的第一个出现位置, 从pos位开始检索。
SELECT LOCATE('bar', 'foobarbar'),LOCATE('bar', 'foobarbar',5);
(30)LPAD(str,len,padstr);在str最左侧填充padstr至整个字符长度为len,若str长度>len,将缩短字符。
SELECT LPAD('hi',4,'??'),LPAD('hi',1,'??');
(31)LTRIM(str);将字符串左侧空格删除
SELECT LTRIM(' ba rbar ');
(32)MAKE_SET(bits,str1,str2,…);返回一个设定值 (一个包含被‘,’号分开的字字符串的字符串) ,由在bits 组中具有相应的比特的字符串组成。str1 对应比特 0, str2 对应比特1,以此类推。str1, str2, …中的 NULL值不会被添加到结果中。
mysql> SELECT MAKE_SET(1,‘a’,‘b’,‘c’);
-> 'a'
mysql> SELECT MAKE_SET(1 | 4,‘hello’,‘nice’,‘world’);
-> 'hello,world'
mysql> SELECT MAKE_SET(1 | 4,‘hello’,‘nice’,NULL,‘world’);
-> 'hello'
mysql> SELECT MAKE_SET(0,‘a’,‘b’,‘c’);
-> ''
(33)MID(str,pos,len);分割字符串SUBSTRING(str,pos,len)的同义词。
(34)OCT(N);返回一个 N的八进制值的字符串表示
其中 N 是一个longlong (BIGINT)数。这等同于CONV(N,10,8)。若N 为 NULL ,则返回值为NULL。
mysql> SELECT OCT(12);
-> ‘14’
(35)OCTET_LENGTH(str);获取长度,LENGTH()的同义词。
(36)ORD(str);若字符串str 的最左字符是一个多字节字符,则返回该字符的代码
假如最左字符不是一个多字节字符,那么 ORD()和函数ASCII()返回相同的值。
(37)POSITION(substr IN str); LOCATE(substr,str)同义词。
(38)QUOTE(str);引证一个字符串,由此产生一个在SQL语句中可用作完全转义数据值的结果。
返回的字符串由单引号标注,每例都带有单引号 (‘'’)、 反斜线符号 (‘\’)、 ASCII NUL以及前面有反斜线符号的Control-Z 。如果自变量的值为NULL, 则返回不带单引号的单词 “NULL”。
mysql> SELECT QUOTE(‘Don’t!’);
-> ‘Don’t!’
mysql> SELECT QUOTE(NULL);
-> NULL
(39)REPEAT(str,count);返回一个由重复的字符串str 组成的字符串,字符串str的数目等于count 。
若 count <= 0,则返回一个空字符串。若str 或 count 为 NULL,则返回 NULL 。
mysql> SELECT REPEAT(‘MySQL’, 3);
-> ‘MySQLMySQLMySQL’
(40)RPAD(str,len,padstr);返回字符串str, 其右边被字符串 padstr填补至len 字符长度。假如字符串str 的长度大于 len,则返回值被缩短到与 len 字符相同长度。
mysql> SELECT RPAD(‘hi’,5,‘?’);
-> ‘hi???’
mysql> SELECT RPAD(‘hi’,1,‘?’);
-> ‘h’
这个函数支持多字节字元。
(41)RTRIM(str);返回字符串 str ,结尾空格字符被删去。
mysql> SELECT RTRIM('barbar ');
-> 'barbar'
这个函数支持多字节字元。
(42)SOUNDEX(str);从str返回一个soundex字符串。
两个具有几乎同样探测的字符串应该具有同样的 soundex 字符串。一个标准的soundex 字符串的长度为4个字符,然而SOUNDEX() 函数会返回一个人以长度的字符串。 可使用结果中的SUBSTRING() 来得到一个标准 soundex 字符串。在str中,会忽略所有未按照字母顺序排列的字符。 所有不在A-Z范围之内的国际字母符号被视为元音字母。
mysql> SELECT SOUNDEX(‘Hello’);
-> 'H400'
mysql> SELECT SOUNDEX(‘Quadratically’);
-> 'Q36324'
注意:这个函数执行原始的Soundex算法,而非更加流行的加强版本(如D. Knuth所述)。其区别在于原始版本首先会删去元音,其次是重复,而加强版则首先删去重复,而后删去元音。
(44)expr1 SOUNDS LIKE expr2;相当于SOUNDEX(expr1) = SOUNDEX(expr2)。
(45)SPACE(N);返回一个由N 间隔符号组成的字符串。
mysql> SELECT SPACE(6);
-> ' '
(46)SUBSTRING_INDEX(str,delim,count);在定界符 delim 以及count 出现前,从字符串str返回自字符串。
若count为正值,则返回最终定界符(从左边开始)左边的一切内容。若count为负值,则返回定界符(从右边开始)右边的一切内容。
mysql> SELECT SUBSTRING_INDEX(‘www.mysql.com’, ‘.’, 2);
-> 'www.mysql'
mysql> SELECT SUBSTRING_INDEX(‘www.mysql.com’, ‘.’, -2);
-> 'mysql.com'
这个函数支持多字节字元。
(47)UCASE(str);UCASE()是UPPER()的同义词。
(48)UNHEX(str);执行从HEX(str)的反向操作。
就是说,它将参数中的每一对十六进制数字理解为一个数字,并将其转化为该数字代表的字符。结果字符以二进制字符串的形式返回。
三、 数值类型函数
(1)ABS(x);绝对值函数
SELECT ABS(5),ABS(-2.4),ABS(-24),ABS(0);
(2)SQRT(x) ;返回非负数 x 的二次方根。
SELECT SQRT(25),SQRT(120),SQRT(-9);
(3)MOD(x,y);求余数函数,返回x被y除后的余数。
SELECT MOD(63,8),MOD(120,10),MOD(15.5,3);
(4)CEIL(x) 和 CEILING(x) ;取整函数,返回值转化为一个 BIGINT。
SELECT CEIL(-2.5),CEILING(2.5);
-2.5 为负数,不小于 -2.5 的最小整数为 -2,因此返回值为 -2;不小于 2.5 的最小整数为 3,因此返回值为 3。
(5)SELECT CEIL(-2.5),CEILING(2.5);返回不小于参数的最小整数,向上取整
(6)FLOOR(x) ;返回小于 x 的最大整数值。
SELECT FLOOR(5),FLOOR(5.66),FLOOR(-4),FLOOR(-4.66);
(7)RAND() ; 0 ~ 1 之间的随机数。
SELECT RAND(),RAND();
(8)ROUND(); 对所传参数进行四舍五入
SELECT ROUND(-6.6),ROUND(-8.44),ROUND(3.44);
(9)SIGN(x); 返回参数正负,x 的值为负、零和正时返回结果依次为 -1、0 和 1。
SELECT SIGN(-6),SIGN(0),SIGN(34);
(10)POW(x,y) 和 POWER(x,y);用于计算 x 的 y 次方
SELECT POW(5,-2),POW(10,3),POW(100,0),POWER(4,3),POWER(6,-3);
(11)SIN(x) ;返回 x 的正弦值,其中 x 为弧度值。
SELECT SIN(1),SIN(0.5*PI());
(12)ASIN(x) ;返回 x 的反正弦值,若 x 不在 -1 到 1 的范围之内,则返回 NULL。
SELECT ASIN(0.8414709848078965),ASIN(2);
(13)COS(x) ;返回 x 的余弦值,x 为弧度值。
SELECT COS(1),COS(0),COS(PI());
(14)ACOS(x) ;反余弦函数 ,x 值的范围必须在 -1 和 1 之间,否则返回 NULL。
SELECT ACOS(2),ACOS(1),ACOS(-1);
(15)TAN(x) ;正切函数 ,返回 x 的正切值,x 为给定的弧度值。
SELECT TAN(1),TAN(0);
(16)ATAN(x) ;返回 x 的反正切值,正切为 x 的值。
SELECT ATAN(1.5574077246549023),ATAN(0);
(17) COT(x) ;返回 x 的余切值,x 是给定的弧度值。
SELECT COT(1);
四、 控制流程函数
(1)IF(expr,v1,v2);如果expr判断结果为true,则返回v1,否则返回v2。
SELECT IF(1<2,1,0) c1, IF(1>5,'√','×') c2, IF(STRCMP('abc','ab'),'yes','no') c3;
(2)IFNULL(v1,v2);如果v1不是 NULL,返回第一个参数; 否则,返回第二个参数。
SELECT IFNULL(device_picture,2) from tl_device_info
(3)CASE WHEN
CASE <表达式>
WHEN <值1> THEN <操作1>
WHEN <值2> THEN <操作2>
…
ELSE <操作3>
END CASE;
SELECT CASE WEEKDAY(NOW()) WHEN 0 THEN '星期一' WHEN 1 THEN '星期二' WHEN
2 THEN '星期三' WHEN 3 THEN '星期四' WHEN 4 THEN '星期五' WHEN 5 THEN '星期六'
ELSE '星期天' END AS COLUMN1,NOW(),WEEKDAY(NOW()),DAYNAME(NOW());
(4)NULLIF(expr1,expr2);如果expr1 = expr2,返回null,否则返回expr1.
等同于CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END
SELECT NULLIF(1,1);
SELECT NULLIF(1,2);
系列博客
MySQL 教程(一)概述
MySQL 教程(二)基础sql语句,增删改查,聚合函数
MySQL 教程(三)函数
MySQL 教程(三)函数相关推荐
- MySQL教程三 复杂一点的查询
文章目录 1.视图 1.1 什么是视图 1.2 视图与表有什么区别 1.3 为什么会存在视图 1.4 如何创建视图 1.5 如何修改视图结构 1.6 如何更新视图内容 1.7 如何删除视图 2 子查询 ...
- mysql的min函数的使用方法_MySQL中MIN()函数的使用教程
MySQL的MIN函数是用来找出一个记录集最小值的记录. 要了解MIN函数考虑的EMPLOYEE_TBL表具有以下记录: mysql> SELECT * FROM employee_tbl; + ...
- mySQL教程 第7章 存储过程和函数
第7章 存储过程和函数 存储过程和存储函数 MySQL的存储过程(stored procedure)和函数(stored function)统称为stored routines. 1. MySQL存储 ...
- mySQL 教程 第7章 存储过程和函数
存储过程和存储函数 MySQL的存储过程(stored procedure)和函数(stored function)统称为stored routines. 1. MySQL存储过程和函数的区别 函数只 ...
- mid函数怎么用mysql_MySQL MID()函数的用法详解(代码示例)-mysql教程-学派吧
在MySQL中,MID()函数返回从指定位置开始的子字符串. MID()和SUBSTR()都是SUBSTRING()的同义词. 基本语法是这样的: MID(str,pos,len) 这里,str是字符 ...
- mysql数学函数有什么_MySQL数学函数的简单总结-mysql教程-学派吧
MySQL包含了很多函数和运算符,可以帮助我们处理数据.下面我们就给大家整理出MySQL中可用的数学函数,希望对需要的朋友有所帮助! ABS()返回给定值的绝对值. ACOS()返回数字的反余弦值. ...
- mysql中sum函数使用_MySQL中的SUM函数使用教程_MySQL
MySQL的SUM函数是用来找出记录中各种的字段的总和. 要了解SUM函数考虑EMPLOYEE_TBL表具有以下记录: mysql> SELECT * FROM employee_tbl; +- ...
- mysql输出max函数_MySQL中的max()函数使用教程
MySQL的max()函数是用来找出一个记录集中的最大值记录. 要了解MAX功能考虑的EMPLOYEE_TBL表具有以下记录: mysql> SELECT * FROM employee_tbl ...
- mysql的min函数的使用方法_MySQL中MIN()函数的使用教程_MySQL
MySQL的MIN函数是用来找出一个记录集最小值的记录. 要了解MIN函数考虑的EMPLOYEE_TBL表具有以下记录: mysql> SELECT * FROM employee_tbl; + ...
- MySQL 笔记6 -- 函数与事务
MySQL 笔记6 – 函数与事务 MySQL 系列笔记是笔者学习.实践MySQL数据库的笔记 课程链接: MySQL 数据库基础入门教程 参考文档: MySQL 官方文档 SQL 教程 一.内置函数 ...
最新文章
- 全过程实现一个最简单的FPGA项目之PWM蜂鸣器控制
- 浅谈并发与并行(一)
- python如何读取excel数据-使用Python读取电子表格中的数据
- Java必备:java入门、java学习
- OpenGL HDR色调映射的实例
- PhotoSwipe 图片浏览插件使用方法
- 小李飞刀:SQL题目第二弹!
- 跨平台RTSP/RTMP转RTMP转发SDK
- Java–cvc-complex-type.4:Attribut ‘version’ must appear on element ‘web-app’
- OUTEROS常用命令
- LaTeX在数学环境中使用直立体
- Web压力测试和手机App测试
- 微信小程序——仿写京东购物商城带源码
- word2vec模型深度解析
- 大数据、数据分析和数据挖掘的区别是什么
- 2019/04/02 实现互联网的DNS架构
- 微信公众号网页分享功能开发
- 张正友相机标定Opencv实现程序(ubuntu下)
- 2022年中国农业现代化发展现状
- 自动安装JDK、HADOOP、ZOOKEEPER、HIVE的shell脚本
热门文章
- 全网最全开源数据集 | 资源
- Android恶意样本分析——frida破解三层锁机样本
- 工业相机——感光元件尺寸介绍
- 集合-HashTable
- 51单片机——LCD1602液晶屏 C语言入门编程
- 科研过程中Linux相关问题
- 第六场问题 B: Bumped!(Dijkstra + 优先队列优化)
- 【Unite Tokyo 2018】虚拟YouTuber电脑少女Siro「2018年资源推荐
- 死亡时间推断MATLAB,AGU 本周精选文章:火星陨石坑;气候敏感性;水资源压力;洪水灾害建模...
- 变分法模型的运用:生产设备的最大经济效益