文中涉及到操作范例,表创建和数据插入的SQL代码,可以打开我的主页,在资源中免费下载。
关系型数据库管理系统:MySQL8.0
数据库管理工具:Navicat Premium 12
函数 | 作用 |
---|---|
CONCAT | 将字符串接在一起 |
REPLACE | 将某个字符(串)替代另一个指定字符(串) |
UPPER | 将字符串里的小写字母转换成大写字母 |
LOWER | 将字符串里的大写字母转换成小写字母 |
SUBSTR | 获取指定位置的字符串 |
LEFT | 返回从最左侧的指定长度的字符串 |
RIGHT | 返回从最右侧的指定长度的字符串 |
INSTR | 查找指定字符串,并返回其位置 |
LENGTH | 获取字符串、数字、日期等字节长度 |
IFNULL | 检查NULL值,并使用新值替代(仅MySQL支持) |
-- 基本语法
SELECT CONCAT(STR1,['字符',] STR2)
FROM TABLE_NAME;
/* CONCAT后面可以用字段名串接字符,字符加单引号,字符与字段名之间逗号隔开。*/
-- 操作范例
SELECT CONCAT(LAST_NAME,' ', FIRST_NAME) AS NAME
FROM EMPLOYEE_TBL;
-- 将字段'LAST_NAME',空格' ','FIRST_NAME'串接起来,返回到NAME字段。
-- 基本语法
SELECT REPLACE(CLOUMN,'VALUE1','VALUE2')
FROM TABLE_NAME;
/*这里CLOUNMN为字段名,VALUE1为字段里需要替换的字符串,VALUE2为替换的字符串*/
-- 操作范例
SELECT CITY,REPLACE(CITY,'IND','A')
FROM EMPLOYEE_TBL;
-- 将字段'CITY'中所有数据的'IND'替换成'A'。
-- 操作范例(一)
SELECT UPPER(CITY)
FROM EMPLOYEE_TBL;
-- 操作范例(二)
SELECT LOWER(CITY)
FROM EMPLOYEE_TBL;
-- 将字段'CITY'中的所有字符转换为大写(小写)。
-- 基本语法
SELECT CLOUMN_NAME,SUBSTRING(CLONMU_NAME,STRING POSITION,LENGTH)
FROM TABLE_NAME;
/*STARING POSITION指定是字符串开始截取的位置
LENGTH 指的是从指定位置截取字符的数量 */
-- 操作范例
SELECT EMP_ID ,SUBSTRING(EMP_ID,2,3) AS ID
FROM EMPLOYEE_TBL;
-- 返回'EMP_ID'字段的第2到第4个字符。
-- 基本语法
SELECT LEFT(COLUMN_NAME,LENGTH) -- LENGTH指的返回字符串的长度
FROM TABLE_NAME;
-- 操作范例
SELECT LEFT(EMP_ID,3),RIGHT(CITY,4)
FROM EMPLOYEE_TBL;
--返回字段'EMP_ID'左侧的3个字符,'CITY'字段右侧的4个字符。
-- 基本语法
SELECT INSTR(COLUMN_NAME,'STRING')--STRING待查询的字符
FROM TABE_NAME;
--操作范例
SELECT PROD_DESC,INSTR(PROD_DESC,'A')
FROM PRODUCTS_TBL;
--返回字段'PROD_DESC'中A首次出现的位置。
-- 基本语法
SELECT LENGTH(COLUMN_NAME)
FROM TABLE_NAME;
-- 操作范例
SELECT PROD_DESC,LENGTH(PROD_DESC)
FROM PRODUCTS_TBL;
--返回字段'PROD_DESC'的长度。
--操作范例
SELECT PAGER,IFNULL(PAGER,1790)
FROM EMPLOYEE_TBL;
--将字段'PAGER'中的NULL值替换为1790。
函数 | 作用 |
---|---|
ABS | 返回绝对值 |
ROUND | 数据的四舍五入,可以指定保留小数长度 |
SQRT | 平方根 |
POWER | 求幂 |
EXP | 求指数 |
SIN、COS、TAN | 求三角函数 |
CEILING、FLOOR | 上下取整 |
算术函数比较简单,举几个例子就能看懂。
SELECT ABS(-20); --返回-20的绝对值。
SELECT SQRT(49); -- 返回49的平方根,若括号内为负数,则返回NULL。
SELECT CEILING(-3.35), CEILING(3.35); --对-3.35和 3.35想上取整。
SELECT ROUND(-1.14), ROUND(-1.9), ROUND(1.14), ROUND(1.9);
--对数值进行四舍五入。
函数 | 作用 |
---|---|
NOW() | 获取当前系统时间 |
DATE_ADD() | 增加时间间隔 |
DATE_SUB() | 减少时间间隔 |
DATE_FORMAT | 将日期转换成字符串 |
STR_TO_DATE() | 字符串转换成日期 |
SELECT NOW(); --返回当前系统时间(日期+时间)
--简单情况
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY); -- 在当前系统日期基础上加上1天
参考下面表格,可以进行增加更加复杂的时间间隔,间隔可以为负数。
设置时间间隔例子 | 含义说明 |
---|---|
INTERVAL ‘3’ DAY(HOUR、MINUTE、SECOND) | 增加3天(小时、分钟、秒) |
INTERVAL ‘4 5’ DAY_HOUR | 时间间隔为4天5小时 |
INTERVAL ‘5 6:7’ DAY_MINUTE | 时间间隔为5天6小时7分钟 |
INTERVAL ‘5 6:7:8’ DAY_SECOND | 时间间隔为5天6小时7分钟8秒 |
假如说这里指定间隔到了单位秒,必须在INTERVAL子句中包含’_SECOND’。
同理,指定间隔到了单位小时,必须在INTERVAL子句中包含’_HOUR’
--操作范例
SELECT DATE_ADD(NOW(), INTERVAL'1 01:15:30' DAY_SECOND);
--时间间隔增加了1天1小时15分30秒。
DATE_SUB()减少时间间隔,和DATE_ADD()用法一致,这里不一一赘述了。
DATE_FORMAT 用于将日期转换成字符串
-- 返回日期字符串
SELECT STR_TO_DATE('08/12/2020', '%m/%d/%Y'); --返回字符串2020-08-12
SELECT STR_TO_DATE('08/12/2020' , '%m/%d/%Y'); --返回字符串2020-08-12
SELECT STR_TO_DATE('08.12.2020', '%m.%d.%Y'); --返回字符串2020-08-12
SELECT STR_TO_DATE('17:21:35', '%H:%i:%s'); --返回字符串17:21:35
SELECT STR_TO_DATE('08.12.2020 17:22:35', '%m.%d.%Y %H:%i:%s'); --返回字符串2020-08-12 17:22:35
/*
%Y:年
%m:月
%d:日
%H:小时
%i:分钟
%s:秒
*/
--操作范例
SELECT STR_TO_DATE('12/08/2020 21:39:40 ','%m/%d/%Y %H:%i:%s');
--返回日期 2020-12-08 21:39:40