SQL函数
函数介绍
函数是 SQL 的一个非常强有力的特性,函数能够用于下面的目的:
- 执行数据计算
- 修改单个数据项
- 操纵输出进行行分组
- 格式化显示的日期和数字
- 转换列数据类型
SQL 函数有输入参数,并且总有一个返回值。
函数分类
SQL函数的两种类型
-
单行函数
单行函数仅对单个行进行运算,并且每行返回一个结果。
常见的函数类型:
- 字符
- 数字
- 日期
- 转换
-
多行函数
多行函数能够操纵成组的行,每个行组给出一个结果,这些函数也被称为组函数。
单行函数
单行函数:
- 操纵数据项
- 接受多个参数并返回一个值
- 作用于每一个返回行
- 每行返回一个结果
- 可以修改数据类型
- 可以嵌套
- 接受多个参数,参数可以是一个列或者一个表达式
单行函数分类
字符函数
大小写处理函数
函数 | 描述 | 实例 |
---|---|---|
LOWER(s) | LCASE(s) | 将字符串 s 转换为小写 | 将字符串 OLDLU转换为小写: SELECT LOWER(“OLDLU”); – oldlu |
UPPER(s) | UCASE(s) | 将字符串s转换为大写 | 将字符串 oldlu转换为大写SELECT UPPER(“oldlu”); – OLDLU |
示例:
显示雇员 Davies 的雇员号、姓名和部门号,将姓名转换为大写。
select
employee_id,UPPER(last_name),department_id
from employees
where last_name = 'davies';
字符处理函数
函数 | 描述 | 实例 |
---|---|---|
LENGTH(s) | 返回字符串 s 的长度 | 返回字符串oldlu的字符数 SELECT LENGTH(“oldlu”); --5; |
CONCAT(s1,s2…sn) | 字符串 s1,s2 等多个字符串合并为一个字符串 | 合并多个字符串 SELECT CONCAT("sxt ", "teacher ", “oldlu”); --sxt teacher oldlu; |
LPAD(s1,len,s2) | 在字符串 s1 的开始处填充字符串 s2,使字符串长度达到len | 将字符串 x 填充到 oldlu字符串的开始处: SELECT LPAD(‘oldlu’,8,‘x’); – xxxoldlu |
LTRIM(s) | 去掉字符串 s 开始处的空格 | 去掉字符串 oldlu开始处的空格: SELECT LTRIM(" oldlu") ;-- oldlu |
REPLACE(s,s1,s2) | 将字符串 s2 替代字符串 s 中的字符串 s1 | 将字符串 oldlu 中的字符 o 替换为字符 O: SELECT REPLACE(‘oldlu’,‘o’,‘O’); --Oldlu |
REVERSE(s) | 将字符串s的顺序反过来 | 将字符串 abc 的顺序反过来: SELECT REVERSE(‘abc’); – cba |
RPAD(s1,len,s2) | 在字符串 s1 的结尾处添加字符串 s2,使字符串的长度达到 len | 将字符串 xx填充到 oldlu字符串的结尾处: SELECT RPAD(‘oldlu’,8,‘x’); – oldluxxx |
RTRIM(s) | 去掉字符串 s 结尾处的空格 | 去掉字符串 oldlu 的末尾空格: SELECT RTRIM("oldlu "); – oldlu |
SUBSTR(s,start,length) | 从字符串 s 的 start 位置截取 长度为 length 的子字符串 |
从字符串 OLDLU中的第 2 个位置截取 3个 字符: SELECT SUBSTR(“OLDLU”, 2, 3); --LDL |
SUBSTRING(s,start,length) | 从字符串 s 的 start 位置截取 长度为 length 的子字符串 |
从字符串 OLDLU中的第 2 个位置截取 3个字符: CT SUBSTRING(“OLDLU”, 2, 3); --LDL |
TRIM(s) | 去掉字符串 s 开始和结尾处的空格 | 去掉字符串 oldlu 的首尾空格: SELECT TRIM(’ oldlu ');–oldlu |
示例:
显示所有工作岗位名称从第 4 个字符位置开始,包含字符串 REP的雇员的ID信息,将雇员的姓和名连接显示在一起,还显示雇员名的的长度,以及名字中字母 a 的位置。
SELECT
employee_id, CONCAT(last_name,first_name) NAME,
job_id,LENGTH(last_name),INSTR(last_name,'a') "Contains 'a'?"
FROM employees
WHERE SUBSTR(job_id, 4) = 'REP';