单行函数

单行函数 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 。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4660a92bd9f744bd670d3268e8dfdc88.html