MySQL常见函数_MySQL
bitsCN.com 字符串函数CONCAT(str1,str2,...) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。 [sql] view plaincopy![]() mysql>%20SELECT%20CONCAT('My',%20'S',%20'QL'); ->%20'MySQL'mysql>%20SELECT%20CONCAT('My',%20NULL,%20'QL'); ->%20NULL mysql>%20SELECT%20CONCAT(14.3); ->%20'14.3'GROUP_CONCAT函数%20将取得的值用逗号连接。%20[sql]%20view%20plaincopy select%20group_concat(id)%20from%20table_name;%20得到的结果是(1,2,3,4,5) mysql>%20SELECT%20SUBSTRING(‘Quadratically’,5);->%20‘ratically’ mysql>%20SELECT%20SUBSTRING(‘foobarbar’%20FROM%204);->%20‘barbar’mysql>%20SELECT%20SUBSTRING(‘Quadratically’,5,6);->%20‘ratica’ mysql>%20SELECT%20SUBSTRING(‘Sakila’,%20-3);->%20‘ila’mysql>%20SELECT%20SUBSTRING(‘Sakila’,%20-5,%203);->%20‘aki’ mysql>%20SELECT%20SUBSTRING(‘Sakila’%20FROM%20-4%20FOR%202);->%20‘ki’SUBSTRING_INDEX(str,delim,count)%20返回字符串%20str%20中在第%20count%20个出现的分隔符%20delim%20之前的子串。%20如果%20count%20是一个正数,返回从最后的(从左边开始计数)分隔符到左边所有字符。%20如果%20count%20是负数,返回从最后的(从右边开始计数)分隔符到右边所有字符。%20mysql>SELECT%20SUBSTRING_INDEX('www.baidu.com',%20'.',%202);%20->%20'www.baidu'%20mysql>%20SELECT%20SUBSTRING_INDEX('www.baidu.com',%20'.',%20-2);%20->%20'baidu.com' 控制流函数CASE%20value%20WHEN%20[compare-value]%20THEN%20result%20[WHEN%20[compare-value]%20THEN%20result%20...]%20[ELSE%20result]%20END%20CASE%20WHEN%20[condition]%20THEN%20result%20[WHEN%20[condition]%20THEN%20result%20...]%20[ELSE%20result]%20END%20在第一个方案的返回结果中,%20value=compare-value。而第二个方案的返回结果是第一种情况的真实结果。如果没有匹配的结果值,则返回结果为ELSE后的结果,如果没有ELSE%20部分,则返回值为%20NULL。IF(expr1,expr2,expr3)函数%20如果expr1为True,则返回expr2,否则返回expr3。%20expr1%20作为一个整数值进行计算,就是说,假如你正在验证浮点值或字符串值,%20那么应该使用比较运算进行检验。%20[sql]%20view%20plaincopy mysql>%20SELECT%20IF(1>2,2,3); ->%203mysql>%20SELECT%20IF(1<2,'yes%20','no'); ->%20'yes' mysql>%20SELECT%20IF(STRCMP('test','test1'),'no','yes'); ->%20'no'IFNULL(expr1,expr2)%20假如expr1%20不为%20NULL,则%20IFNULL()%20的返回值为%20expr1;%20否则其返回值为%20expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。这个函数一般用来替换NULL值,因为NULL值是不能参与数值运算的,下面这个语句就可以把NULL值用0来替换。%20[sql]%20view%20plaincopy mysql>%20SELECT%20IFNULL(1,0); ->%201mysql>%20SELECT%20IFNULL(NULL,10); ->%2010 mysql>%20SELECT%20IFNULL(1/0,10); ->%2010mysql>%20SELECT%20IFNULL(1/0,'yes'); ->%20'yes' mysql>%20SELECT%20NULLIF(1,1); ->%20NULLmysql>%20SELECT%20NULLIF(1,2); ->%201 select%20coalesce(a,b,c)%20from%20table_name;%20如果a不为null,则选择a;如果a为null%20,则选择b;如果b为null,则选择c;如果a、b、c都为null,则返回null。 mysql>%20SELECT%20GREATEST(2,0); ->%202mysql>%20SELECT%20GREATEST(34.0,3.0,5.0,767.0); ->%20767.0 mysql>%20SELECT%20GREATEST('B','A','C'); ->%20'C'时间函数CURDATE()%20返回当前日期,只包含年月日UNIX_TIMESTAMP(),%20UNIX_TIMESTAMP(date)%20若无参数调用,则返回一个Unix%20timestamp%20('1970-01-01%2000:00:00'%20GMT%20之后的秒数)%20作为无符号整数。若用date%20来调用UNIX_TIMESTAMP(),它会将参数值以'1970-01-01%2000:00:00'%20GMT后的秒数的形式返回。date%20可以是一个DATE%20字符串、一个%20DATETIME字符串、一个%20TIMESTAMP或一个当地时间的YYMMDD%20或YYYMMDD格式的数字。%20[sql]%20view%20plaincopy mysql>%20SELECT%20UNIX_TIMESTAMP(); ->%20882226357mysql>%20SELECT%20UNIX_TIMESTAMP('1997-10-04%2022:23:00'); ->%20875996580 mysql> SELECT TO_DAYS(950501); -> 728779mysql> SELECT TO_DAYS('1997-10-07'); -> 729669 |