SQL入门教程(八):常用函数的总结及用法

SQL入门教程(八):常用函数篇

  • 前言
  • 字符函数
    • CONCAT
    • REPLACE
    • UPPER 和 LOWER
    • SUBSTR、LEFT 和 RIGHT
    • INSTR
    • LENGTH
    • IFNUL
    • 组合使用
  • 数学函数
  • 日期函数

前言

文中涉及到操作范例,表创建和数据插入的SQL代码,可以打开我的主页,在资源中免费下载。

关系型数据库管理系统:MySQL8.0

数据库管理工具:Navicat Premium 12

字符函数

函数 作用
CONCAT 将字符串接在一起
REPLACE 将某个字符(串)替代另一个指定字符(串)
UPPER 将字符串里的小写字母转换成大写字母
LOWER 将字符串里的大写字母转换成小写字母
SUBSTR 获取指定位置的字符串
LEFT 返回从最左侧的指定长度的字符串
RIGHT 返回从最右侧的指定长度的字符串
INSTR 查找指定字符串,并返回其位置
LENGTH 获取字符串、数字、日期等字节长度
IFNULL 检查NULL值,并使用新值替代(仅MySQL支持)

CONCAT

-- 基本语法
SELECT CONCAT(STR1,['字符',] STR2)
FROM TABLE_NAME;
/* CONCAT后面可以用字段名串接字符,字符加单引号,字符与字段名之间逗号隔开。*/

-- 操作范例
SELECT CONCAT(LAST_NAME,' ', FIRST_NAME) AS NAME
FROM EMPLOYEE_TBL;
-- 将字段'LAST_NAME',空格' ','FIRST_NAME'串接起来,返回到NAME字段。

REPLACE

  • REPLACE函数用于一个字符串把另一个字符串整个替换掉。
-- 基本语法
SELECT REPLACE(CLOUMN,'VALUE1','VALUE2')
FROM TABLE_NAME;
/*这里CLOUNMN为字段名,VALUE1为字段里需要替换的字符串,VALUE2为替换的字符串*/

-- 操作范例
SELECT CITY,REPLACE(CITY,'IND','A')
FROM EMPLOYEE_TBL;
-- 将字段'CITY'中所有数据的'IND'替换成'A'。

UPPER 和 LOWER

-- 操作范例(一)
SELECT UPPER(CITY)
FROM EMPLOYEE_TBL;

-- 操作范例(二)
SELECT LOWER(CITY)
FROM EMPLOYEE_TBL;
-- 将字段'CITY'中的所有字符转换为大写(小写)。

SUBSTR、LEFT 和 RIGHT

  • SUBSTR函数用于从指定位置获取指定长度的字符串。
-- 基本语法
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个字符。
  • LEFT和RIGHT函数用于返回从最左侧(右侧)的指定长度的字符串。
-- 基本语法
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个字符。

INSTR

  • INSTR函数用于寻找指定的字符,并返回其位置。
-- 基本语法
SELECT INSTR(COLUMN_NAME,'STRING'--STRING待查询的字符
FROM TABE_NAME;

--操作范例
SELECT PROD_DESC,INSTR(PROD_DESC,'A')
FROM PRODUCTS_TBL;
--返回字段'PROD_DESC'中A首次出现的位置。

LENGTH

  • LENGTH函数用于获取字符串、数字、日期等字节长度。
-- 基本语法
SELECT LENGTH(COLUMN_NAME)
FROM TABLE_NAME;

-- 操作范例
SELECT PROD_DESC,LENGTH(PROD_DESC)
FROM PRODUCTS_TBL;
--返回字段'PROD_DESC'的长度。

IFNUL

  • IFNULL函数用于查找NULL值,并用另一个值替代(数据类型必须相同)。
  • 仅MySQL支持。
--操作范例
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() 字符串转换成日期
  • NOW()返回系统时间
SELECT NOW(); --返回当前系统时间(日期+时间)
  • DATE_ADD()增加时间间隔。
--简单情况
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:秒
*/
  • STR_TO_DATE()用于字符串转换日期
--操作范例
SELECT STR_TO_DATE('12/08/2020 21:39:40 ','%m/%d/%Y %H:%i:%s');
--返回日期 2020-12-08 21:39:40

你可能感兴趣的:(SQL入门教程系列)