hi,你好!欢迎访问本站!登录
站点地图 文章归档 免责声明 投稿本站 RSS订阅
当前位置:首页 - 数据库 - Oracle - 正文 个人博客网站开通,欢迎!!!

Oracle 11G函数整理(转换函数)

2019-03-27Oracle站长8822°c
A+ A-
--1、ASCIISTR(ch) 转换ch为ASCII字符串
SELECT ASCIISTR('AB?CDE张三') a1 FROM DUAL;
 
--2、BIN_TO_NUM(ch)  转换位向量为一个数字[ch为逗号隔开的0或1]
SELECT BIN_TO_NUM(1,0,0,0) a1 FROM DUAL;--2的3次方[1000]
 
--3、CAST(expr astype_name) 转换expr为type_name类型[前提是能够转换才行]
SELECT CAST(to_date('2013-01-01 01:01:01','YYYY-MM-DDHH24:MI:SS') As Timestamp With Local TIME ZONE) a1 FROM DUAL;
select CAST('12435'As number) a2 from dual;
 
--4、CHARTOROWID(ch) 将字符串转换为ROWID类型
select CHARTOROWID('AAAFd1AAFAAAABSAA/') a1 from dual;
 
--5、 COMPOSE(string)函数:这个函数以UNICODE字符串为参数,返回一个规范化的字符串。比如,它可以接受一个字母和一个组合标记,比如说'a'(Unicode 字符0097)和沉音符(Unicode 字符0300),然后创建一个单独的由两个标记组合而成的字符(à)。
Select COMPOSE('a'||unistr('\0301'))  from dual;


--6、CONVERT(ch,dest_ch_set,source_char_set)转换字符串为另一种字符串
SELECT CONVERT('? ¨º ¨ª ? ? A B C DE ', 'US7ASCII', 'WE8ISO8859P1') a1 FROM DUAL;
 
--7、DECOMPOSE(string)函数:返回一个Unicode字符串。它是string的规范分解。
SELECT DECOMPOSE ('Châteaux') FROM DUAL; 
 
--8、HEXTORAW(ch) 转换十六进制字符串为RAW类型
SELECT HEXTORAW('4041424344') a1 FROM DUAL;
SELECT UTL_RAW.CAST_TO_VARCHAR2(HEXTORAW('4041424344')) a1 FROM DUAL;
 
--9、NUMTODSINTERVAL(n,interval_unit) 将数字与单位转换为内部时间格式, interval_unit格式有:DAY,HOUR,MINUTE,SECOND 【DS表示 DAY——>SECOND】
select sysdate+NUMTODSINTERVAL(10,'DAY')a1,sysdate+NUMTODSINTERVAL(10,'HOUR') a2,sysdate+NUMTODSINTERVAL(10,'MINUTE')a3,sysdate+NUMTODSINTERVAL(10,'SECOND') a4 from dual
 
--10、NUMTOYMINTERVAL(n,interval_unit) 将数字与单位转换为内部时间格式, interval_unit格式有:YEAR ,MONTH【YM表示 YEAR——>MONTH】
select sysdate+NUMTOYMINTERVAL(10,'YEAR') a1,sysdate+NUMTOYMINTERVAL(10,'MONTH')a2 from dual
 
--11、 RAWTOHEX(rawvalue)函数:将raw串转换为十六进制. rawvalue中的每个字节都被转换为一个双字节的字符串.
select rawtohex('AA') from dual;
--结果:4141 结果之所以是4141是因为A的ASCII为65,65转换为十六进制就是41。

--12、RAWTONHEX(raw)= TO_NCHAR(RAWTOHEX(raw))
 
--13、ROWIDTOCHAR(rowid) 将ROWID转换为字符串,长度18
select  rowid,ROWIDTOCHAR(rowid) a1 from scott.emp;
 
--14、ROWIDTONCHAR(rowid)=TO_NCHAR(ROWIDTOCHAR(rowid))
 
--15、SCN_TO_TIMESTAMP(scn)将SCN转换为时间戳
--当前时间戳
select dbms_flashback.get_system_change_number from dual;

SELECT to_char( SCN_TO_TIMESTAMP(16326265286358),'YYYY-MM-DD HH24:MI:SS') FROM dual WHERE Rownum = 1;
 ;
--16、TIMESTAMP_TO_SCN(timestamp)将时间戳转换为SCN
select TIMESTAMP_TO_SCN(systimestamp) a1,Systimestamp As a2 from dual
 
--17、TO_BINARY_DOUBLE(expr,fmt,nlspara)返回双精度类型数据
select TO_BINARY_DOUBLE(12) a1 from dual;
 
--18、TO_BINARY_FLOAT(expr,fmt,nlspara)返回单精度类型数据
select TO_BINARY_FLOAT(12) a1 from dual;
 
--19、TO_BLOB(raw_val) 转换LONG RAW和RAW数据为BLOB类型
SELECT TO_BLOB(raw_col) blobFROM tb_name;
 
--20、TO_CHAR (character) 转换NCHAR,NVARCHAR2,CLOB,NCLOB为VARCHAR2类型
select to_char('Hello张三') a1 from dual;
 
--21、TO_CHAR (datetime,fmt,nlspara)将时间相关;诶行转换为VARCHAR2类型
select TO_CHAR(systimestamp, 'YYYY-MM-DDHH24:MI:SSxFF') a1 FROM dual;
SELECT TO_CHAR(INTERVAL'123-2'YEAR(3) To MONTH) a1 FROM DUAL;
 
--22、TO_CHAR(number,fmt,nlspara) 将数字相关类型NUMBER, BINARY_FLOAT, or BINARY_
DOUBLE转换为VARCHAR2类型
SELECT TO_CHAR(-10000,'L99G999D99MI') a1 FROM DUAL;
SELECT TO_CHAR(-10000,'L99G999D99MI','NLS_NUMERIC_CHARACTERS= '',.''NLS_CURRENCY = ''RMB$'' ') a1 From DUAL;
 
--23、TO_CLOB(ch)将字符串转换为CLOB类型
UPDATE tb_name SET clob_col = TO_CLOB(data);
 
--24、TO_DATE(ch,fmt,nlspara)将字符串转换为Date类型
SELECT TO_DATE('January 15, 1989,11:00 A.M.','Month dd, YYYY,HH:MI A.M.','NLS_DATE_LANGUAGE =American') a1 From DUAL;
SELECT TO_DATE('2012-12-0110:01:02','YYYY-MM-DDHH24:MI:SS') a1 FROM DUAL;
 
--25、TO_DSINTERVAL(fmt) 转换一个格式字符串为一个内部的 DAY——>SECOND
select  sysdate+TO_DSINTERVAL('10 00:00:00') a1 from dual;--加10天
select  sysdate+TO_DSINTERVAL(to_char(sysdate,'DD hh24:mi:ss')) a1 from dual;--加上当前时间的时分秒
 
--26、TO_YMINTERVAL(fmt) 转换一个格式字符串为一个内部的 YEAR——>MONTH
select  sysdate+TO_YMINTERVAL('01-03') a1 from dual;--加15个月
select  sysdate+TO_YMINTERVAL(to_char(sysdate,'yyyy-MM')) a1 from dual;
 
--27、TO_LOB(long) 转换long和long raw类型为LOB类型
SELECT TO_LOB(long_col) lob  FROM tb_name;
 
--28、TO_MULTI_BYTE(ch) 将字符串转换为双字节表示
select TO_MULTI_BYTE('Hello张三') a1 from dual;
 
--29、TO_NCHAR (character)转换NCHAR,NVARCHAR2,CLOB,NCLOB为NVARCHAR2类型
select to_nchar('Hello张三') a1 from dual;
 
--30、TO_NCHAR (datetime,fmt,nlspara)将时间相关;诶行转换为NVARCHAR2类型
select  TO_NCHAR(systimestamp, 'YYYY-MM-DD HH24:MI:SSxFF') a1 FROM dual;
SELECT  TO_NCHAR(INTERVAL'123-2'YEAR(3) To MONTH) a1 FROM DUAL;
 
--31、TO_NCHAR (number,fmt,nlspara)将数字相关类型NUMBER, BINARY_FLOAT, or BINARY_
--DOUBLE转换为NVARCHAR2类型
SELECT TO_NCHAR(-10000,'L99G999D99MI') a1 FROM DUAL;
SELECT TO_NCHAR(-10000,'L99G999D99MI','NLS_NUMERIC_CHARACTERS= '',.''NLS_CURRENCY = ''AusDollars'' ') a1 From DUAL;
 
--32、TO_NCLOB(ch) 将字符串转换为NCLOB类型
UPDATE tb_name SET nclob_col = TO_NCLOB(data);
 
--33、TO_NUMBER(expr,fmt,nlspara)格式化数字输出
SELECT TO_NUMBER('-AusDollars100','L9G999D99','NLS_NUMERIC_CHARACTERS = '',.''NLS_CURRENCY = ''AusDollars''') a1 FROM DUAL;
 
--34、TO_SINGLE_BYTE(ch) 转换为单字节字符 ch类型可以是 CHAR,VARCHAR2, NCHAR, or NVARCHAR2,不能是CLOB
Select TO_SINGLE_BYTE('Hello张三') a1 from dual;
 
--35、TO_TIMESTAMP(ch,fmt,nlspara)转换为时间戳
SELECT  TO_TIMESTAMP('2013-09-3014:10:10.12320', 'YYYY-MM-ddHH24:MI:SS.FF') a1 FROM DUAL;
 
--36、TO_TIMESTAMP_TZ(ch,fmt,nlspara)转换为带时区的时间戳
SELECT  TO_TIMESTAMP_TZ('2013-09-3014:10:10.12320', 'YYYY-MM-dd HH24:MI:SS.FF') a1 FROM DUAL;
 
--37、TRANSLATE (ch USINGCHAR_CS|NCHAR_CS) 将字符串转换为规定的字符集
select  TRANSLATE('Hello张三' USING CHAR_CS) a1,TRANSLATE('Hello张三' USING NCHAR_CS) a2 from dual
 
--38、UNISTR(string) 将字符串转换为AL16UTF16或 UTF8字符
select  UNISTR('Hello张三') a1 from dual;


  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
Oracle 11G函数整理(转换函数)

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

发表评论