msyql常用函数

在业务开发中,mysql其实也有很多常用的函数,来方便查询数据。

有的时候根据业务需要也可以写到存储进程中,但是这是不建议的,因为业务一旦复杂起来存储进程中的sql会越来越长,可读性太差,后期维护起来会很难。

好了,开始说正题吧。

字符串相关函数:

concat(s1,s2,s3,...) --把传入的参数连接成为一个字符串。
   //例如,select concat('aaa','bbb','ccc'),concat('aaa',null);任何字符串与 NULL 进行连接的结果都将是 NULL
INSERT(str ,x,y,instr) --将字符串 str 从第 x 位置开始,y 个字符长的子串替换为字符串 instr。
   //例如,select insert('beijing2008you',12,3,'me')
LOWER(str)和 UPPER(str) --把字符串转换成小写或大写
   //例如,select lower('BEIJING');select upper('beijing');
LEFT(str,x)和 RIGHT(str,x) --分别返回字符串最左边的 x 个字符和最右边的 x 个字符。
   //例如,select left('qwertasd',1);select right('qwertasd',1);如果第二个参数是 NULL,那么将不返回任何字符串。
LPAD(str,n ,pad)和 RPAD(str,n ,pad) --用字符串 pad 对 str 最左边和最右边进行填充,直到长度为 n 个字符长度。
   //例如,select lpad('2008',20,'beijing');select rpad('2008',20,'beijing')
LTRIM(str)和 RTRIM(str) --去掉字符串 str 左侧和右侧空格。
   //例如,select ltrim('     |beijing');select rtrim('beijing|      ');
LTRIM(str)和 RTRIM(str) --去掉字符串 str 左侧和右侧空格。
   //例如,select ltrim('     |beijing');select rtrim('beijing|      ');
REPEAT(str,x) --返回 str 重复 x 次的结果。
   //例如,select repeat('mysql',3)
REPLACE(str,a,b) --用字符串 b 替换字符串 str 中所有出现的字符串 a。
   //例如,select replace('beijing_2012','_2012','2008');
STRCMP(s1,s2) --比较字符串 s1 和 s2 的 ASCII 码值的大小。如果 s1 比 s2 小,那么返回-1;如果 s1 与 s2 相等,那么返回 0;如果 s1 比 s2 大,那么返回 1。
   //例如,select strcmp('a','b'),strcmp('b','b'),strcmp('c','b');
TRIM(str) --去掉目标字符串的开头和结尾的空格。
   //例如,select trim(' $ beijing2008 $ ');
SUBSTRING(str,x,y) --返回从字符串 str 中的第 x 位置起 y 个字符长度的字串。
   //例如,select substring('beijing2008',8,4),substring('beijing2008',1,7);

数组函数:

ABS(x) --返回 x 的绝对值。
   //例如,select abs(-0.8);
CEIL(x) --返回大于 x 的最大整数。
   //例如,select ceil(-0.4);select ceil(0.4);
FLOOR(x) --返回小于 x 的最大整数,和 CEIL 的用法刚好相反。
   //例如,select floor(0.4);
MOD(x,y) --返回 x/y 的模。和 x%y 的结果相同,模数和被模数任何一个为 NULL 结果都为 NULL。
   //例如,select MOD(15,10),MOD(1,11),MOD(NULL,10);
RAND() --返回 0 到 1 内的随机值。每次执行结果都不一样。
   //例如,select RAND(),RAND();
   //例如,select ceil(100*rand()),ceil(100*rand());
ROUND(x,y) --返回参数 x 的四舍五入的有 y 位小数的值。如果是整数,将会保留 y 位数量的 0;如果不写 y,则默认 y 为 0,即将 x 四舍五入后取整。适合于将所有数字保留同样小数位的情况。   
  //例如,select ROUND(1.1),ROUND(1.136,2),ROUND(1,2); TRUNCATE(x,y) --返回数字 x 截断为 y 位小数的结果。 //例如,select ROUND(1.235,2),TRUNCATE(1.235,2);

日期和时间函数:

CURDATE() --返回当前日期,只包含年月日。
   //例如,select CURDATE();
CURTIME() --返回当前时间,只包含时分秒。
   //例如,select CURTIME();
NOW() --返回当前的日期和时间,年月日时分秒全都包含。
   //例如,select NOW();
UNIX_TIMESTAMP(date) --返回日期 date 的 UNIX 时间戳。
   //例如,select UNIX_TIMESTAMP(now());
FROM_UNIXTIME(unixtime) --返回UNIXTIME时间戳的日期值。
   //例如,select FROM_UNIXTIME(1184134516);
WEEK(DATE)和 YEAR(DATE) --前者返回所给的日期是一年中的第几周,后者返回所给的日期是哪一年。   
  //例如,select WEEK(now()),YEAR(now()); HOUR(time)和 MINUTE(time) --前者返回所给时间的小时,后者返回所给时间的分钟。 //例如, select HOUR(CURTIME()),MINUTE(CURTIME()); MONTHNAME(date) --返回 date 的英文月份名称。 //例如,select MONTHNAME(now()); DATE_FORMAT(date,fmt) --按字符串 fmt 格式化日期 date 值。 //例如 ,select DATE_FORMAT(now(),'%M,%D,%Y'); DATE_ADD(date,INTERVAL expr type) --返回与所给日期 date 相差 INTERVAL 时间段的日期。 //例如,select now() current,date_add(now(),INTERVAL 31 day) after31days,date_add(now(),INTERVAL '1_2' year_month) after_oneyear_twomonth;DATEDIFF(date1,date2) --用来计算两个日期之间相差的天数。 //例如,select DATEDIFF('2008-08-08',now());

流程函数:

IF(value,t f) --如果 value 是真,返回 t;否则返回 f。
   //例如,select if(salary>2000,'high','low') from salary;
IFNULL(value1,value2) --如果 value1 不为空返回 value1,否则返回 value2。
   //例如,select ifnull(salary,0) from salary;
CASE WHEN [value1] THEN[result1]…ELSE[default]END --如果 value1 是真,返回 result1,否则返回 default。   
  //例如, select case when salary<=2000 then 'low' else 'high' end from salary; CASE [expr] WHEN [value1] THEN[result1]…ELSE[default]END --如果 expr 等于 value1,返回 result1,否则返回 default。
  //例如,select case salary when 1000 then 'low' when 2000 then 'mid' else 'high' end from salary;

其他函数:

DATABASE() --返回当前数据库名。
VERSION() --返回当前数据库版本。
USER() --返回当前登录用户名。
INET_ATON(IP) --返回 IP 地址的网络字节序表示。
INET_NTOA(num) --返回网络字节序代表的 IP 地址。
PASSWORD(str) --返回字符串 str 的加密版本,一个 41 位长的字符串。(只可用于密码)
MD5(str) --返回字符串 str 的 MD5 值,常用来对应用中的数据进行加密。

 


  

上一篇:msyql多实例部署


下一篇:20191325main参数