Oracle笔记(五)单行函数(一)

2014-11-24 15:03:32 · 作者: · 浏览: 3

Oracle笔记(五)单行函数
虽然各个数据库都是支持SQL语句的,但是每一个数据库也有每一个数据库自己所支持的操作函数,这些就是单行函数,而如果要想进行数据库开发的话,除了要会使用SQL之外 ,就是要多学习函数。
单行函数主要分为以下五类:字符函数、数字函数、日期函数、转换函数、通用函数;
一、字符函数
字符函数的功能主要是进行字符串数据的操作,下面给出几个字符函数:
UPPER(字符串 | 列):将输入的字符串变为大写返回;
LOWER(字符串 | 列):将输入的字符串变为小写返回;
INITCAP(字符串 | 列):开头首字母大写; www.2cto.com
LENGTH(字符串 | 列):求出字符串的长度;
REPLACE(字符串 | 列):进行替换;
SUBSTR(字符串 | 列,开始点 [,结束点]):字符串截取;
Oracle之中有一点比较麻烦,即使要验证字符串,也必须编写完整的SQL语句,所以在Oracle数据库之中为了用户查询方便,所以专门提供了一个“dual”的虚拟表。
范例:观察转大写的函数
SELECT UPPER('hello') FROM dual;
SQL> SELECT UPPER('hello') FROM dual;
UPPER
-----
HELLO
大写转换的用处:在一般的使用之中,用户输入数据的时候去关心数据本身存放的是大写还小写吗?
SELECT * FROM emp WHERE ename='&str';
SQL> SELECT * FROM emp WHERE ename='&str';
输入 str 的值: smith
原值 1: SELECT * FROM emp WHERE ename='&str'
新值 1: SELECT * FROM emp WHERE ename='smith'
未选定行
SQL> SELECT * FROM emp WHERE ename='&str';
输入 str 的值: SMITH
原值 1: SELECT * FROM emp WHERE ename='&str'
新值 1: SELECT * FROM emp WHERE ename='SMITH'
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
此时如果输入的是小写,则肯定无法查询出数据,所以这个时候不能要求用户这么多,所以这个时候只能由程序自己去适应,加入一个函数:
SELECT * FROM emp WHERE ename=UPPER('&str');
SQL> SELECT * FROM emp WHERE ename=UPPER('&str');
输入 str 的值: smith
原值 1: SELECT * FROM emp WHERE ename=UPPER('&str')
新值 1: SELECT * FROM emp WHERE ename=UPPER('smith')
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
当然以上的“&”的操作属于替代变量的内容,此部分内容不做重点。
范例:观察转小写的操作,将所有的雇员姓名按照小写字母返回
SELECT LOWER(ename) FROM emp;
范例:将每一个雇员姓名的开头首字母大写
SELECT INITCAP(ename) FROM emp;
范例:查询出每个雇员姓名的长度
SELECT ename,LENGTH(ename) FROM emp;
范例:要求查询出姓名长度正好是5的雇员信息
SELECT ename,LENGTH(ename) FROM emp
WHERE LENGTH(ename)=5;
范例:使用字母“_”替换掉姓名中的所有字母“A”
SELECT REPLACE(ename,'A','_') FROM emp;
字符串截取操作有两种语法:
语法一:SUBSTR(字符串 | 列,开始点),表示从开始点一直截取到结尾;
SELECT ename,SUBSTR(ename,3) FROM emp;
语法二:SUBSTR(字符串 | 列,开始点,结束点),表示从开始点截取到结束点,截取部分内容;
SELECT ename,SUBSTR(ename,0,3) FROM emp;
SELECT ename,SUBSTR(ename,1,3) FROM emp;
范例:要求截取每个雇员姓名的后三个字母
正常思路:通过长度-2确定开始点
SELECT ename,SUBSTR(ename,LENGTH(ename)-2) FROM emp;
新思路:设置负数,表示从后指定截取位置;
SELECT ename,SUBSTR(ename,-3) FROM emp;
面试题:请问SUBSTR()函数截取的时候下标从0还是从1开始?
在Oracle数据库之中,SUBSTR()函数从0或1开始都是一样的;
SUBSTR()也可以设置为负数,表示由后指定截取的开始点;
二、数字函数
数字函数一共有三个:
ROUND(数字 | 列 [,保留小数的位数]):四舍五入的操作;
TRUNC(数字 | 列 [,保留小数的位数]):舍弃指定位置的内容;
MOD(数字 1,数字2):取模,取余数;
www.2cto.com
范例:验证ROUND()函数
SELECT ROUND(903.53567),ROUND(-903.53567), ROUND(903.53567,2), ROUND(-90353567,-1) FROM dual;
ROUND(903.53567) ROUND(-903.53567) ROUND(903.53567,2) ROUND(-90353567,-1)
---------------- ----------------- ------------------ -------------------
904 -904 903.54 -90353570
范例:验证TRUNC()函数
SELECT TRUNC(903.53567),TR