ORACLE常用函数——转换函数

  • 格式:pdf
  • 大小:98.11 KB
  • 文档页数:3

ORACLE常⽤函数——转换函数

------------------------------------------类型转换函数----------------------------------------------

--⾃动类型转换, ORACLE 可以⾃动根据具体情况进⾏如下转换:

*字符串到数值

*字符串到⽇期

*数值到字符串

*⽇期到字符串

EX:

--*字符串到数值

SELECT '3.14159' + 20 FROM DUAL;

SELECT '3.1T' + 20 FROM DUAL; --报错:⽆效数字,即字符串必须能转换为数值类型才能进⾏操作

--*数值到字符串

SELECT '100' || 124 FROM DUAL;

--1: TO_CHAR(DATE,'FORMAT')

把对应的数据转换为字符串类型

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;

SELECT TO_CHAR(SAL) FROM SCOTT.EMP;

SELECT TO_CHAR(122323.45, '$99999999.99') FROM DUAL;

Y或YY或YYY 年的最后⼀位,两位或三位

SELECT TO_CHAR(SYSDATE, 'YYY') FROM DUAL;

SELECT TO_CHAR(SYSDATE, 'YY') FROM DUAL;

SYEAR或YEAR SYEAR使公元前的年份前加⼀负号

SELECT TO_CHAR(SYSDATE, 'SYEAR') FROM DUAL; --TWENTY ELEVEN

Q 季度,1~3⽉为第⼀季度

SELECT TO_CHAR(SYSDATE, 'Q') FROM DUAL; -- 2表⽰第⼆季度

MM ⽉份数

SELECT TO_CHAR(SYSDATE, 'MM') FROM DUAL; --04表⽰4⽉

RM ⽉份的罗马表⽰

SELECT TO_CHAR(SYSDATE, 'RM') FROM DUAL; --IV表⽰4⽉

Month ⽤9个字符长度表⽰的⽉份名

SELECT TO_CHAR(SYSDATE, 'MONTH') FROM DUAL; -- 4⽉

WW 当年第⼏周

SELECT TO_CHAR(SYSDATE, 'WW') FROM DUAL; -- 24表⽰2002年6⽉13⽇为第24周

W 本⽉第⼏周

SELECT TO_CHAR(SYSDATE, 'W') FROM DUAL; -- 2011年04⽉26⽇为第4周

DDD 当年第⼏天. 1⽉1⽇为001,2⽉1⽇为032

SELECT TO_CHAR(SYSDATE, 'DDD') FROM DUAL;

DD 当⽉第⼏天

SELECT TO_CHAR(SYSDATE, 'DD') FROM DUAL;

D 周内第⼏天 SELECT TO_CHAR(SYSDATE, 'D') FROM DUAL;

DY 周内第⼏天缩写

SELECT TO_CHAR(SYSDATE, 'DY') FROM DUAL;

HH或HH12 12进制⼩时数

SELECT TO_CHAR(SYSDATE, 'HH') FROM DUAL;

HH24 24⼩时制

SELECT TO_CHAR(SYSDATE, 'HH24') FROM DUAL;

MI 分钟数(0~59)

SELECT TO_CHAR(SYSDATE, 'MI') FROM DUAL;

提⽰注意不要将MM格式⽤于分钟(分钟应该使⽤MI)。MM是⽤于⽉份的格式,将它⽤于分钟也能⼯作,但结果是错误的。

SS 秒数(0~59)

SELECT TO_CHAR(SYSDATE, 'SS') FROM DUAL;

--2: TO_DATE(STRING,'FORMAT')

将字符串转化为ORACLE中的⼀个⽇期

SELECT TO_DATE('2011-03-24', 'YYYY/MM/DD') FROM DUAL; --格式化后依然为 2011-3-24, 很是纳闷,⾃⼰查资料解决这个问题

SELECT TO_DATE('2011/03/24', 'YYYY-MM-DD') FROM DUAL;

--3: TO_NUMBER

将给出的字符转换为数字

SELECT TO_NUMBER('2008') AS Year FROM DUAL;

--4: RUNC(for number)

按照指定的精度截取⼀个数TRUNC函数返回处理后的数值,其⼯作机制与ROUND函数极为类似,只是该函数不对指定⼩数前或后的部分做相应舍⼊选择处理,⽽统

统截去。

其具体的语法格式如下

TRUNC(number[,decimals])

其中:

number 待做截取处理的数值

decimals 指明需保留⼩数点后⾯的位数。可选项,忽略它则截去所有的⼩数部分

SELECT TRUNC(314.14159234, -2) AS FirstNumber, TRUNC(314.14159234,2) FROM DUAL;

--5: CHARTOROWID

把包含外部格式的ROWID的CHAR或VARCHAR2数值转换为内部的⼆进制格式.参数string必须是包含外部格式的ROWID的18字符的字符

串.oracle7和 oracle8中的外部格式是不同的.CHARTOROWID是ROWIDTOCHAR的反函数.

SELECT ROWID, CHARTOROWID('adcddfADGEDGJGFRYJ'), ENAME FROM SCOTT.EMP;

--6: ROWIDTOCHAR

将ROWID数据类型转换为字符类型

将ROWID类型的数值rowid转换为其外部的18字符的字符串表⽰,在oracle7和oracle8之间有些不⼀样的地⽅. ROWIDTOCHAR和CHARTOROWID是两个相反的函数.SELECT ROWID, ROWIDTOCHAR(ROWID), ENAME FROM SCOTT.EMP

--7: CONVERT(c,dset,sset)

将源字符串 sset从⼀个语⾔字符集转换到另⼀个⽬的dset字符集

SELECT CONVERT('? ê í ó ? A B C D E ', 'US7ASCII', 'WE8ISO8859P1') FROM DUAL;

--8:HEXTORAW

将⼀个⼗六进制构成的字符串转换raw

SELECT HEXTORAW('324') FROM DUAL;

--9: RAWTOHEX

将RAW类数值rawvalue转换为⼀个相应的⼗六进制表⽰的字符串. rawvalue中的每个字节都被转换为⼀个双字节的字符串. RAWTOHEX和HEXTORAW是两个相反的函数.

SELECT RAWTOHEX('11') FROM DUAL;

--10: TO_MULTI_BYTE

将字符串中的单字节字符转化为多字节字符

即将指定字符转换为全⾓并返回char类型字串 SELECT TO_MULTI_BYTE('ABC abc 中华') FROM DUAL;

SELECT TO_MULTI_BYTE('AFDB') FROM DUAL;

--11: DUMP(s,fmt,start,length)

DUMP函数以fmt指定的内部数字格式返回⼀个VARCHAR2类型的值

dump是个功能⾮常强悍的函数,对于深⼊了解oracle存储的⼈⽽⾔相当有⽤。所以对于我们这些仅仅只是应⽤的⼈⽽⾔就不知道能将其应

⽤于何处了。此处仅介绍⽤法,不对其功能做深⼊分析。

如上所⽰,dump拥有不少参数。其本质是以指定格式,返回指定长度的exp的内部表⽰形式的varchar2值。fmt含4种格

式:8||10||16||17,分别表⽰8进制,10进制,16进制和单字符,默认为10进制。 start参数表⽰开始位置,length表⽰以,分隔的字串数。

例如:SELECT DUMP('abcdefg',17,2,4) FROM DUAL;

--12: EMPTY_BLOB()

这两个函数都是⽤来对⼤数据类型字段进⾏初始化操作的函数

--13: EMPTY_CLOB()

-----------------------------------------------------------------------------------------------------------