四、转换函数
转换函数接受某种数据类型的参数,将其转换为另一种数据类型作为函数的返回值,
从而实现把数值从一种数据类型转换为另一种数据类型的功能。
常用,整形、浮点型、字符串、日期:
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