首页 教程 Oracle数据库之单行函数分享

Oracle数据库之单行函数分享

ASP站长网单行函数
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 。
范例: 查询所有10部门雇员姓名,但不显示每个雇员姓名的前三个字母
 
SELECT ename 原姓名,SUBSTR(ename,3) 截取之后的姓名
FORM emp
WHERE deptno = 10;
范例:显示每个雇员姓名及姓名的后三个字母
 
要想截取每个姓名之中的后三个,首先要解决的问题是开始点,从一个指定的开始点一直截取到结尾,可是每个雇员的姓名长度是不同的,那么开始点如何确定呢?
 
实现一:使用传统做法,先求得姓名长度,然后减2确定开始点
SELECT ename 原始姓名,SUBSTR(ename,LENGTH(ename) – 2) 截取之后的姓名  
FORM emp
WHERE deptno = 10;
实现二:除了此类做法之外,也可以设置开始点为负数
SELECT ename 原始姓名,SUBSTR(ename,-3) 截取之后的姓名  
FORM emp
WHERE deptno = 10;
现在很明显使用第二种最方便,这个也属于 Oracle 的特色,不过需要注意的是:Java 语言的字符串下标还是从0开始,而且 Java 里的 substring() 方法是不能设置负数的。
 
面试题:请问 Oracle 中的 SUBSTR() 函数的下标开始点是从0还是1开始?
 
​ 答:可以设置为0,也可以设置为1,即使使用了0,那么最终的结果也会将其定义为1。
 
范例:返回指定字符的 ASCII 码
 
SELECT ASCII('A'),ASCII('L')
FORM dual;
范例:验证 CHR() 函数,将ASCII 码变回字符
 
SELECT CHR(100) FORM dual;
范例:去掉字符串左边空格 – LTRIM() ,去掉右边空格 – RTRIM()
 
SELECT '     MLDN    LiXingHua     ' 原始字符串,LTRIM('    ') 去掉左空格
FORM dual;
 
SELECT '     MLDN    LiXingHua     ' 原始字符串,RTRIM('    ') 去掉右空格
FORM dual;
范例:去掉左右空格
 
SELECT '     MLDN    LiXingHua     ' 原始字符串,TRIM('    ') 去掉左右空格
FORM dual;
不管如何取消空格,中间的空格可是无法消除掉的。
范例:字符串左填充 – LPAD() ,字符串右填充 – RPAD()
 
SELECT LPAD('MLDN',10,'*') LPAD函数使用,RPAD('MLDN',10,'*') RPAD函数使用,
LPAD(RPAD('MLDN',10,'*'),16,'*') 组合使用
FORM dual;
范例:字符串查找 – INSTR()
 
SELECT
    INSTR('MLDN Java','MLDN') 查找得到,
    INSTR('MLDN Java','Java') 查找得到,
    INSTR('MLDN Java','JAVA') 查找不到
FORM dual;
这个函数和 Java 中的 indexOf() 方法功能是相同的。
小结:
字符函数的主要功能是进行字符串数据的操作

关于作者: dawei

【声明】:九江站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

热门文章