单行函数 6.1、认识单行函数
函数就是和 Java 语言之中的方法的功能是一样的,都是为了完成某些特定操作的功能支持,而在 Oracle 数据库里面也包含了大量的单行函数,这些函数掌握了以后,可以方便的帮助进行数据库的相关开发。
对开发者而言,最为重要的就是 SQL 语法和单行函数,可是 Oracle 中的单行函数的数量是非常多的。本章只讲解使用,后面会讲解如何去开发用户自己的函数(PL/SQL 编程)
6.1.1 单行函数语法 funcation_name(列|表达式[,参数1,参数2,])
函数名称(列 | 表达式 | 数值),而且在Oracle 书中只讲解基本的一些单行函数。
6.1.2 单行函数分类字符函数:接收数据返回具体的字符信息
数值函数:对数字进行处理,如:四舍五入
日期函数:直接对日期进行相关操作
转换函数:日期、字符、数字之间可以完成互相转换功能
通用函数:Oracle 子句提供的有特色的函数
6.2、字符函数一定是以字符数据为主(字符串)
NO.函数名称描述1 UPPER(列|字符串) 将字符串的内容全部转大写
2 LOWER(列|字符串) 将字符串的内容全部转小写
3 INITCAP(列|字符串) 将字符串的开头首字母大写
4 REPLACE(列|字符串,新的字符串) 使用新的字符串替换旧的字符串
5 LENGTH(列|字符串) 求出字符串长度
6 SUBSTR(列|字符串,开始点[,长度]) 字符串截取
7 ASCII(字符) 返回与指定字符对应的十进制数字
8 CHR(数字) 给出一个整数,并返回与之对应的字符
9 RPAD(列|字符串,长度,填充字符)
LPAD(列|字符串,长度,填充字符) 在左或右填充指定长度字符串
10 LTRIM(字符串) , RTRIM(字符串) 去掉左或右空格
11 TRIM(列|字符串) 去掉左右空格
12 INSTR(列|字符串,要查找的字符串,开始位置,出现位置) 查找一个字符串是否在指定位置上出现
在这里有一个问题就会出现,在 Oracle 里面所有的验证操作必须存在在完整的 SQL 语句之中,所以如果现在只是进行功能验证,使用的是一张具体的表。
scott 用户下: SELECT UPPER('li xing hua') FORM emp;这个时候发现结果被重复显示了14行,所以现在函数的功能的确是进行了验证,但是代价太高。如果使用 DISTINCT 可以消除,那么如果 emp 表中的数据很多呢?那么中间处理的数据量就会很大,所以现在就希望有一张表可以帮助用户进行验证,而在 Oracle 里就提供了一个 dual 的数据表(是虚拟表)。
范例:验证 UPPER() 和 LOWER() 函数
SELECT UPPER('li xing hua'),LOWER('MLDN') FORM dual;范例:现在查询出雇员姓名是“smith”的完整信息,但是由于失误,没有考虑到大小写问题,此时可以使用UPPER() 函数将全部内容变为大写。
SELECT * FORM emp WHERE ename = UPPER('smith');范例:查询所有雇员姓名,要求每个雇员的姓名以首字母大写的形式出现
SELECT ename 原始姓名,INITCAP(ename) 姓名开头首字母大写 FORM emp;范例:查询所有雇员信息,要求将雇员姓名中所有的字母“A”替换成“_”
SELECT ename,REPLACE(ename,'A','_') FORM emp;范例:查出姓名长度是5的所有雇员信息
SELECT * FORM emp WHERE LENGTH(ename) = 5;范例:查询出雇员姓名前三个字母是“JAM”的雇员信息
那么现在要想办法截取出前三个字符,截取操作就一定要使用 SUBSTR() 函数,要注意的是,SUBSTR() 函数有两种形式:
从指定位置截取到结尾:SUBSTR(列 | 字符串,截取开始点)
截取部分字符串:SUBSTR(列 | 字符串,截取开始点,截取个数)
SELECT * FORM emp WHERE SUBSTR(ename,1,3) = 'JAM'; 或者: SELECT * FORM emp WHERE SUBSTR(ename,0,3) = 'JAM';注意:在 Oracle 中,下标都是从1开始,如果设置为0,也会自动将其转换为1 。