mysql 函数

字符函数

upper | lower

转换为大/小写

SELECT UPPER('a');     #结果为'A'
SELECT LOWER('A');     #结果为'a'

group_concat

GROUP_CONCAT()用于将一组中的数据拼起来即行转列。

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

substr

SUBSTR(str,pos,len) 截取字符串,字符串索引从1开始

SELECT SUBSTR('my name is Liming',4,4);  #结果为'name'
SELECT SUBSTR('my name is Liming',4);    #结果为'name is Liming'

ON DUPLICATE KEY UPDATE

单个增加更新及批量增加更新的sql

INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)  ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

concat

连接参数产生的字符串,如有任何一个参数为NULL ,则返回值为 NULL

concat(str1,str2,…)  

cast

cast(字段名 as 转换的类型 ),其中类型可以为:
CHAR[(N)] 字符型
DATE 日期型
DATETIME 日期和时间型
DECIMAL float型
SIGNED int
TIME 时间型

cast(XXX as signed)
将XXX字段转化为int类型

instr

INSTR(str,substr) 返回子串第一次出现的索引,字符串索引从1开始

SELECT INSTR('my name is lala','la'); #结果为12

trim

TRIM(str,substr) 首尾去除规定字符,默认去空格

SELECT TRIM('   my  name  is  lala ');  #结果为'my  name  is  lala'
SELECT TRIM('Y' FROM 'YY my  name YY is  lala  YYY'); #结果为'my  name YY is  lala '

lpad

LPAD(str,len,padstr) | RPAD(str,len,padstr) 用规定字符左(右)填充至指定长度

SELECT LPAD('my',10,'*');      #结果为'********my'
SELECT RPAD('my',10,'ab');     #结果为'myabababab'

replace

REPLACE(str,old,new) 字符串替换

SELECT REPLACE('my name is lala','la','da');   #结果为'my name is dada'

substring_index

substring_index(str,delim,count) 字符串截取,如果count是正数,那么就是从左往右数,第N个分隔符的左边的全部内容;如果是负数,那么就是从右边开始数,第N个分隔符右边的所有内容

str = '1,2,6';
SELECT substring_index('1,2,6',',',1);   #结果为'1'
SELECT substring_index('1,2,6',',',-2);   # 结果为 '2,6'
SELECT substring_index(substring_index('1,2,6',',',-2),',',1);   #结果为 ‘2’

数学函数

round

ROUND(X,D) 四舍五入,保留指定位数,默认为保留整数

SELECT ROUND(-1.65);          #结果为-2
SELECT ROUND(-1.65,1);        #结果为-1.7

crlt 、floor

CEIL(X) | FLOOR(X) 向上|向下取整

 SELECT CEIL(1.44);        #结果为2
 SELECT FLOOR(1.55);       #结果为1

truncate

TRUNCATE(X) 截取保留指定小数位

 SELECT TRUNCATE(2.666,1);    #结果为2.6

mod

MOD(X1,X2) 取模

SELECT MOD(10,3);    #结果为1,符号与被除数一致
SELECT MOD(-10,3);   #结果为-1
SELECT MOD(10,-3);   #结果为1

日期函数

now 、 curdate

NOW()、CURDATE() 当前时间、当前日期

 SELECT NOW();      #结果为2019-10-19 14:40:54
 SELECT CURDATE();  #结果为2019-10-19

DATE_ADD()

DATE_ADD(NOW(), INTERVAL + 2 year) 据当前时间2年

dayofweek

DAYOFWEEK(date) 返回结果表示星期几

SELECT DAYOFWEEK('2020-06-02 09:06:54');  #结果为3 即指星期二
注意:星期天=1,星期一=2, ... 星期六=7

weekday

WEEKDAY(date) 返回结果表示一周中的序号

SELECT WEEKDAY('2020-06-02 09:06:54');    #结果为1 
注意:0=星期一,1=星期二, ... 5=星期六)

dayofmonth

DAYOFMONTH(date); 表示返回date是当月的第几天,1号就返回1,… ,31号就返回31

SELECT DAYOFMONTH('2020-06-02 09:06:54');     #返回结果是2

dayname

DAYNAME(date) 返回date的星期英文全称

SELECT DAYNAME('2020-06-02 09:06:54');   #结果为:Tuesday

monthname

MONTHNAME(date) 返回date月的英文全称

SELECT MONTHNAME('2020-06-02 09:06:54');  #结果为:June

quarter

QUARTER(date) 返回date所在季度

SELECT QUARTER('2020-06-02 09:06:54');  #结果为2

year、month、day、hour、minute、second

YEAR() | MONTH() | DAY() | HOUR() | MINUTE() | SECOND()

 SELECT YEAR('2019-10-1');    #结果为2019

datediff、timediff

DATEDIFF(date1,date2) | TIMEDIFF(date1,date2) 两个日期相差的天数|两个时刻相差的时间

SELECT DATEDIFF('2019-10-17','2019-10-1');#结果为16,前面的减后面的
SELECT TIMEDIFF('2019-10-17 15:30:2','2019-10-1 7:0:0');#结果为 392:30:02

str_to_date

STR_TO_DATE(str,format) 字符串按格式转为日期
DATE_FORMAT(date,format) 日期按格式转为字符串

符号意义
%Y四位年月
%y两位年月
%m月份(01,02…)
%c月份(1,2,…)
%d日(01,02…)
%H小时(24制)
%h小时(12制)
%i分钟(01,02…)
%s秒(01,02…)
 SELECT STR_TO_DATE('10-1 2019','%c-%d %Y');    #结果为2019-10-01
 SELECT DATE_FORMAT(NOW(),'%Y.%m.%d');          #结果为2019.10.19

其他

if

SELECT IF(0 > 1 ,'yes','no');   #结果为'no'

case-when-then-end

用法1,相当于Java的swhich case,判断一个

SELECT score,course
        CASE job_id
        WHEN '1' THEN 'Chinese'
        WHEN '2' THEN 'English '
        WHEN '3' THEN 'math'
        ELSE 'other'
        END  
FROM user_score;   

用法2,相当于Java的if-else if-else,判断一个表达式

SELECT last_name,
       CASE
      WHEN salary<5000 THEN  '<5000'
      WHEN salary BETWEEN 5000 AND 10000 THEN '5000-10000'
      ELSE 	'>10000'
      END  
FROM employees;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值