記事のディレクトリ
- 1行関数:値を渡し、値を取得します:長さ連結
- グループ化関数:値のセットを渡して値を取得します:合計、最大、最小
(1)1行機能
1行の機能は次のように分けることができます。
- 文字関数:length、concat、upper、lower、substr、instr、trim、lpad、rpad、replace、
- 数学関数:round、ceil、floor、truncate、mod
- 日期関数数:now、curdate、curtime、year、month…monthname、str_to_date、date_format
- その他の機能:バージョン、データベース、ユーザー
- フロー制御機能:if、case
1.キャラクター機能
# 字符函数
#1.LENGTH 判断字符的长度
select
first_name,
length(first_name) as 'first_name\'s length'
from
employees ;
#2.concat 连接字符
select
concat(first_name, ' ', last_name) as fullname
from
employees ;
#3upper 将参数中所有字符大写
select
upper(first_name) as upperFirstname ,
lower(last_name) as lowerLastname
from
employees ;
#4.substr(或者substring)的四种方式,需要注意的是SQL中的索引都是从1开始的
#4.1 从第n个开始到最后
select substr('123454321',4);
#4.2 从第n个开始的长度为m的字符串
select substr('123454321',1,2);
select substr('123454321',-3,2);
#5.instr 查找在某个字符串中第一个出现的子串的位置
select instr('123454','4');
#6. trim 从左右两头分别修建字符(默认为空格,也可以指定修剪字符)
select trim(' notSpace notSpace ');
select trim( 'aa' from 'aaaaaNNNNNNNNNaaaaaaaNNNNNNa');
#7.lpad,rpad. l和r意味着左和右,pad意为填充,中间的参数是指总长度为多少
select lpad('test',11,'leftPad');
select rpad('test',12,'rightPad');
#8.replace
select replace('111122223333','111','222');
2.数学関数
数学函数
#1.round四舍五入,第二个参数表明保留到小数点后几位
select round(1.4);
select round(1.56789,3);
#2.ceil向上取整,floor 向下取整
select
ceil(1.4443333),
ceil(- 1.4434),
floor(1.555557576),
floor(- 2.45) ;
#3.truncate小数点后截断
select truncate(1.123456789, 4) ;
#4.mod 取余,其实取余的操作就是一个公示例如:MOD(m,n)=m-(m/n)n
select mod(-1,4);
3.日付機能
#日期函数
#1.now 当前时间,包括日期和具体时间
SELECT NOW() ;
#2.curdate 当前日期,curtime 当前具体时间
SELECT
CURDATE() ,
CURTIME() ;
#3.year,month,day,hour,minute,second,获取时间中具体的某个值
SELECT
YEAR(NOW()),
MONTH(NOW()),
MONTHNAME(NOW()),
DAY(NOW()),
HOUR(NOW()),
MINUTE(NOW()),
SECOND(NOW());
#4.str_to_date 将一个字符串转换成日期
SELECT STR_TO_DATE('2000年1月16日','%Y年%c月%d日');
SELECT STR_TO_DATE('2017/01/02', '%Y/%m/%d');
#5. date_format 将一个日期转换成字符串
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日');
4.プロセス制御機能
流程控制函数
#1.if 通过if可以达到控制的效果
select
concat(first_name, '_', last_name) as 'name',
if(
salary >= 10000,
'person top person',
'person under person'
) as 'level'
from
employees ;
#2.case函数,有两种用法
#2.1 类似于编程语言中的switch on用法
select
CONCAT(first_name, '_', last_name) AS 'name',
case department_id
when 90 then 'Finance Department'
when 60 then 'Hunman Resource Department'
when 100 then 'Marketing Department'
else 'Son OF A Bitch Department'
end As Department
from employees;
#2.2 类似于编程语言中的多重if else
select
CONCAT(first_name, '_', last_name) AS 'Name',
case
when salary>=10000 then 'Person top person'
when salary>=8000 then 'Just a worker'
when salary>=5000 then 'You are a joker'
else 'Trash'
end as 'level'
from employees;
5.その他の機能
# 其他函数
#1.version:输出当前mysql的版本
SELECT VERSION();
#2.database,
SELECT DATABASE();
#3.user
SELECT USER();
(2)グループ化機能
- 合計:合計
- 平均:平均
- 最小:最小値
- 最大:最大
- カウント:列の数
#首先要说明的是 所有的分组函数都会忽略 NULL
#1 sum:总和
SELECT
SUM(salary)
FROM
employees ;
#2.avg:平均值
SELECT AVG(salary)
FROM employees;
#3.min,max:最大值和最小值
SELECT MAX(salary),MIN(salary)
FROM employees;
#4.count:列的个数
SELECT COUNT(`employee_id`)
FROM employees;