文章目录

  • 一、日期计算函数
  • (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 教程(三)函数相关推荐

  1. MySQL教程三 复杂一点的查询

    文章目录 1.视图 1.1 什么是视图 1.2 视图与表有什么区别 1.3 为什么会存在视图 1.4 如何创建视图 1.5 如何修改视图结构 1.6 如何更新视图内容 1.7 如何删除视图 2 子查询 ...

  2. mysql的min函数的使用方法_MySQL中MIN()函数的使用教程

    MySQL的MIN函数是用来找出一个记录集最小值的记录. 要了解MIN函数考虑的EMPLOYEE_TBL表具有以下记录: mysql> SELECT * FROM employee_tbl; + ...

  3. mySQL教程 第7章 存储过程和函数

    第7章 存储过程和函数 存储过程和存储函数 MySQL的存储过程(stored procedure)和函数(stored function)统称为stored routines. 1. MySQL存储 ...

  4. mySQL 教程 第7章 存储过程和函数

    存储过程和存储函数 MySQL的存储过程(stored procedure)和函数(stored function)统称为stored routines. 1. MySQL存储过程和函数的区别 函数只 ...

  5. mid函数怎么用mysql_MySQL MID()函数的用法详解(代码示例)-mysql教程-学派吧

    在MySQL中,MID()函数返回从指定位置开始的子字符串. MID()和SUBSTR()都是SUBSTRING()的同义词. 基本语法是这样的: MID(str,pos,len) 这里,str是字符 ...

  6. mysql数学函数有什么_MySQL数学函数的简单总结-mysql教程-学派吧

    MySQL包含了很多函数和运算符,可以帮助我们处理数据.下面我们就给大家整理出MySQL中可用的数学函数,希望对需要的朋友有所帮助! ABS()返回给定值的绝对值. ACOS()返回数字的反余弦值. ...

  7. mysql中sum函数使用_MySQL中的SUM函数使用教程_MySQL

    MySQL的SUM函数是用来找出记录中各种的字段的总和. 要了解SUM函数考虑EMPLOYEE_TBL表具有以下记录: mysql> SELECT * FROM employee_tbl; +- ...

  8. mysql输出max函数_MySQL中的max()函数使用教程

    MySQL的max()函数是用来找出一个记录集中的最大值记录. 要了解MAX功能考虑的EMPLOYEE_TBL表具有以下记录: mysql> SELECT * FROM employee_tbl ...

  9. mysql的min函数的使用方法_MySQL中MIN()函数的使用教程_MySQL

    MySQL的MIN函数是用来找出一个记录集最小值的记录. 要了解MIN函数考虑的EMPLOYEE_TBL表具有以下记录: mysql> SELECT * FROM employee_tbl; + ...

  10. MySQL 笔记6 -- 函数与事务

    MySQL 笔记6 – 函数与事务 MySQL 系列笔记是笔者学习.实践MySQL数据库的笔记 课程链接: MySQL 数据库基础入门教程 参考文档: MySQL 官方文档 SQL 教程 一.内置函数 ...

最新文章

  1. 全过程实现一个最简单的FPGA项目之PWM蜂鸣器控制
  2. 浅谈并发与并行(一)
  3. python如何读取excel数据-使用Python读取电子表格中的数据
  4. Java必备:java入门、java学习
  5. OpenGL HDR色调映射的实例
  6. PhotoSwipe 图片浏览插件使用方法
  7. 小李飞刀:SQL题目第二弹!
  8. 跨平台RTSP/RTMP转RTMP转发SDK
  9. Java–cvc-complex-type.4:Attribut ‘version’ must appear on element ‘web-app’
  10. OUTEROS常用命令
  11. LaTeX在数学环境中使用直立体
  12. Web压力测试和手机App测试
  13. 微信小程序——仿写京东购物商城带源码
  14. word2vec模型深度解析
  15. 大数据、数据分析和数据挖掘的区别是什么
  16. 2019/04/02 实现互联网的DNS架构
  17. 微信公众号网页分享功能开发
  18. 张正友相机标定Opencv实现程序(ubuntu下)
  19. 2022年中国农业现代化发展现状
  20. 自动安装JDK、HADOOP、ZOOKEEPER、HIVE的shell脚本

热门文章

  1. 全网最全开源数据集 | 资源
  2. Android恶意样本分析——frida破解三层锁机样本
  3. 工业相机——感光元件尺寸介绍
  4. 集合-HashTable
  5. 51单片机——LCD1602液晶屏 C语言入门编程
  6. 科研过程中Linux相关问题
  7. 第六场问题 B: Bumped!(Dijkstra + 优先队列优化)
  8. 【Unite Tokyo 2018】虚拟YouTuber电脑少女Siro「2018年资源推荐
  9. 死亡时间推断MATLAB,AGU 本周精选文章:火星陨石坑;气候敏感性;水资源压力;洪水灾害建模...
  10. 变分法模型的运用:生产设备的最大经济效益