Oracle中的函数(转换、字符)

转换函数介绍


转换函数用于将数据类型从一种转为另外一种,在某种情况下,oracle server允许值的数据类型和实际的不一样,这时oracle server会隐含的转化数据类型

比如
create table t1(id int);
insert into t1 values('10') -->这样oracle会自动的将'10'-->10

create table t2(id varchar2(10));
insert into t2 values(1); -->这样oracle就会自动的将1-->'1';

我们要说到的是尽管oracle可以进行隐含的数据类型的转换,但是它并不适应所有的情况,为了提高程序的可靠性,我们应该使用转换函数进行转换

*************to_char()***************
你可以使用select ename,hiredate,sal from emp where deptno=10;显示信息,可是,在某些情况下,这个并不能满足你的需求。


?日期是否可以显示 时/分/秒
SQL> select ename,to_char(hiredate,'yyyy/mm/dd hh24:mi:ss') from emp;

注意:
如果添加数据的时候没有按照hh24:mi:ss的格式来添加则系统会默认为0即查询的时候显示hh24-->00:00:00 hh12-->12:00:00


?薪水是否可以显示指定的货币符号
SQL> select ename,to_char(sal,'L99999.99') 薪水 from kkkk;
SQL> select ename,to_char(sal,'$99,999.99') 薪水 from kkkk;
//货币符号显示在工资的后面
SQL> select ename,to_char(sal,'99,999.99L') 薪水 from kkkk;

其中:to_char里的L代表的是货币类型,99999.99代表要显示的格式是五位整数和两个小数
之所以要这样设计的原因是:表中sal这一列的类型是
SAL      NUMBER(7,2)  Y   
其中7代表包括整数和小数一共有7位数字,2代表有两个小数


yy:两位数字的年份 2004-->04
yyyy:四位数字的年份 2004年
mm:两位数字的月份 8月-->08
dd:2位数字的天 30号-->30
hh24:8点 --> 20
hh12:8点 --> 08
mi、ss -->显示分钟\秒

9:显示数字,并忽略前面的0
0:显示数字,如位数不足,则用0补齐
.: 在指定位置显示小数点
,: 在指定位置显示逗号
$: 在数字前加美元货币符号
L:在数字前加本地货币符号
C:在数字前加国际货币符号
G: 在指定位置显示组分隔符、
D: 在指定位置显示小数点符号(.)

to_char

?显示1980年入职的所有员工
SQL> select * from emp where to_char(hiredate,'yyyy')=1980;

?显示所有12月份入职的员工
SQL> select * from emp where to_char(hiredate,'mm')=12;


to_date
函数to_date用于将字符串转换成date类型的数据

?能否按照中国人习惯的方式年-月-日添加日期
SQL> insert into kkkk values(3243,'HELEN','ANALYST',7902,to_date('1994-5-2','yyyy-mm-dd'),900,30,20);

字符函数介绍


字符函数是oracle中最常用的函数,分别有
1.lower(char):将字符串转化为小写的格式。
2.upper(char):将子符串转化为大写的格式。
3.length(char):返回字符串的长度。
4.substr(char,m,n):取字符串的子串。
意思是指从第m个字符开始,取n个字符
5.replace(char1,search_string,replace_string):可以把需要指定的字母进行替换
其中char1是指对哪一个字段进行替换,前面是要替换的字符串,后面是指定的字符串
6.instr(char1,char2,[,n[,m]]):取子串在字符串的位置


?将所有员工的名字按小写的方式显示
SQL> select lower(ename) from emp;
SQL> select lower(ename),sal from emp;

?将所有员工的名字按大写的方式显示
SQL> select upper(ename) from emp;
SQL> select upper(ename),sal from emp;

?显示正好为5个字符的员工的姓名
SQL> select * from emp where length(ename)=5;

?显示所有员工的名字的前三个字符
SQL> select substr(ename,1,3) from emp;
SQL语句的意思就是将ename这个属性从第一个字符开始截取3个字符

?以首字母大写的方式显示所有员工的姓名

步骤

1.完成首字母大写
select upper(substr(ename,1,1)) from emp;
2.完成后面字母小写
select lower(substr(ename,2,length(ename)-1)) from emp;
3. 合并在一起
SQL> select upper(substr(ename,1,1))||lower(substr(ename,2,length(ename))) from emp;

?以首字母小写的方式显示所有员工的姓名

步骤

1.完成首字母小写
select lower(substr(ename,1,1)) from emp;
2.完成后面字母大写
select upper(substr(ename,2,length(ename)-1)) from emp;
3.合并在一起
select lower(substr(ename,1,1))||upper(substr(ename,2,length(ename)-1)) from emp;


?显示所有员工的姓名,用"我是A"替换所有"A"
SQL> select replace(ename,'A','我是老虎') from emp;
SQL> select replace(ename,'SMIT','替换') from emp;

猜你喜欢

转载自1124117571.iteye.com/blog/2284951