星辰日月00

欲多则心散,心散则志衰,志衰则思不达也!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

四、转换函数
转换函数接受某种数据类型的参数,将其转换为另一种数据类型作为函数的返回值,
从而实现把数值从一种数据类型转换为另一种数据类型的功能。

常用,整形、浮点型、字符串、日期:

1.整型转字符型

to_char(1)

2.字符串转整形

to_number('1')

3.字符串转浮点型

to_number('1.1')

4.浮点型转字符串

to_char(1.1)

5.字符串转日期

to_date('2007-04-26','yyyy-mm-dd') 

6.字符串转时间戳 

to_date('2007-04-26 08:08:08','YYYY-MM-DD HH24:MI:SS') 

7.日期转字符串 

to_char(to_date('2007-04-29','yyyy-mm-dd'),'yyyy-mm-dd')

8.CAST(x AS type_name)
--将x的值从一种数据类型转换为由type_name指定的数据类型。
SELECT CAST(TO_DATE('08-8-2008','DD-MM-YY') AS VARCHAR2(15)) FROM dual;   --08-8月 -08

 

 

不太常用:

 1.ASCIISTR(x)

--将字符类型数据x转换为一个ASCII字符串,其中x由任意字符集的字符组成。
--非ASCII字符保持不变。
SELECT ASCIISTR('Oracle数据库') FROM dual;        --Oracle\6570\636E\5E93
2.BIN_TO_NUM(b1[,b2][,b3]...)
--将各位由b1、b2、b3构成的二进制数字转换为NUMBER数字(十进制)。
SELECT BIN_TO_NUM(1,0,1,1,1,0) FROM dual;         --46
3.CAST(x AS type_name)
--将x的值从一种数据类型转换为由type_name指定的数据类型。
SELECT CAST(TO_DATE('08-8-2008','DD-MM-YY') AS VARCHAR2(15)) FROM dual;   --08-8月 -08
4.CHARTOROWID(x)
--将字符串x转换为ROWID类型数据。要求字符串x必须满足ROWID数据类型的格式。
SELECT CHARTOROWID('BBAFc2AAFAAEEEGFS/') FROM dual;                     --BBAFc2AAFAAEEEGFS/
5.HEXTORAW(x)
--将十六进制数字的字符x转换为RAW数据类型。
SELECT HEXTORAW('ABCDEF55') FROM dual;    --ABCDEF55
6.RAWTOHEX(x)
--将RAW转换为VARCHAR2类型的字符
SET SERVEROUTPUT ON
DECLARE
  var VARCHAR2(15);
BEGIN
  var := ROWTOHEX('ABCDEF55');
  DBMS_OUTPUT.PUT_LINE('转换结果:' || var);
END;
7.RAWTONHEX(x)
--将x值从RAW类型转换为NVARCHAR2类型的字符。
SET SERVEROUTPUT ON
DECLARE
  var NVARCHAR2(15);
BEGIN
  var := RAWTONHEX('ABCDEF55');
  DBMS_OUTPUT.PUT_LINE('转换结果:' || var);
END;
8.ROWIDTOCHAR(X)
--将x的值从ROWID类型转换为VARCHAR2类型。
SET SERVEROUTPUT ON
DECLARE
  var NVARCHAR2(20);
BEGIN
  var := ROWIDTOCHAR('BBAFC2AAFAAEEEGFS/');
  DBMS_OUTPUT.PUT_LINE('转换结果:' || var);
END;
9.ROWIDTONCHAR(X)
--将X的值从ROWID类型转换为NVARCHAR2类型。
DECLARE
  var NVARCHAR2(20);
BEGIN
  var := ROWIDTONCHAR('BBAFC2AAFAAEEEGFS/');
  DBMS_OUTPUT.PUT_LINE('转换结果:' || var);
END;
10.TO_BINARY_DOUBLE(x)
--将x转换为一个BINARY_DOUBLE类型
SELECT TO_BINARY_DOUBLE(2008) FROM dual;    --2008
11.TO_BINARY_FLOAT(x)
--将x转换为一个BINARY_FLOAT类型
SELECT TO_BINARY_FLOAT(2008) FROM dual;     --2008
12.TO_CHAR(X[,format])
--将x转换为一个VARCHAR2字符串。x取数字或日期时间类型数据,可选参数format指定x的格式。
SELECT TO_CHAR(sysdate, 'YYYY-MM-DD'), TO_CHAR(2008.0808,'9.9EEEE') FROM dual;
--2012-03-07,2.0E+03
13.TO_DATE(x[,format])
--将字符串x转换为DATE类型数据。
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH12:MI:SS';
SELECT TO_DATE('2008-8-8 8:00:00','YYYY-MM-DD HH12:MI:SS') FROM dual;  --2008-08-08 8:00:00

 

posted on 2012-03-07 15:01  星辰日月00  阅读(390)  评论(0编辑  收藏  举报