ORACLE 常用函数——转换函数

摘要:
SS秒SELECTTO_ CHARFORMDUAL;--2: TO_DATE将字符串转换为ORACLE_DATEFROMDUAL中的日期SELECTTO;--格式化后,仍然是2011年3月24日。我非常困惑。我自己检查了数据以解决这个问题SELECTTO_DATEFROMDUAL;--3: TO_ NUMBER将给定字符转换为数字SELECTTO_ NUMBERASYearFROMDUAL;--4: RUNC根据指定的精度截获一个数字。TRUNC函数返回处理后的值。它的工作机制与ROUND函数非常相似,只是该函数不舍入指定小数之前或之后的部分。
------------------------------------------类型转换函数----------------------------------------------
--
自动类型转换, 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 分钟数(
059
SELECT TO_CHAR(SYSDATE, 'MI'FROM DUAL;
提示注意不要将MM格式用于分钟(分钟应该使用MI)。MM是用于月份的格式,将它用于分钟也能工作,但结果是错误的。

SS 秒数(
059
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-2AS FirstNumber, TRUNC(314.14159234,2FROM 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,4FROM DUAL; 


--12:  EMPTY_BLOB()
这两个函数都是用来对大数据类型字段进行初始化操作的函数


--13:  EMPTY_CLOB()
--
---------------------------------------------------------------------------------------------------------

免责声明:文章转载自《ORACLE 常用函数——转换函数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇生成远程控制木马以及提权Calender怎么用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

详谈 oracle 索引 (笔记)

1、oracle索引空值问题   当在有空值得列上建立单列索引时,如果搜索条件为 is null 在解释计划中可以看到,对于此列oracle并没有使用索引查询;   但是当建立的是多列索引是,就会按照索引来进行查询。 2、B-树索引   示意图:    在B-树索引中,将会按照从上到下的顺序进行索引。如果列的选择度不低的话,索引扫描就会很慢。原因就在于要遍...

C++fread/fwrite的基础用法

前言 fread是吼东西 应某人要求(大概)科普一下 fread #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #define fo(a,b,c) for (a=b; a<=c; a++) #def...

ORACLE逐行累计求和方法(OVER函数)

sql over的作用及用法1.RANK ( ) OVER ( [query_partition_clause] order_by_clause )DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause )可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序,其中PARTITIO...

不安装oracle客户端如何使用plsql连接数据库

不安装oracle客户端如何使用plsql连接数据库 1. 准备工作 1.1下载plsqldev破解版软件 我这里使用plsqldev715版本 1.2下载instantclient-basic-win32-11.2.0.1.0 oracle官网下载 2. plsqldev安装 2.1解压plsql.zip压缩包 2.2双击plsqldev715.ex...

getchar()和scanf()混合使用的坑

最近在混合使用 getchar() 和 scanf() 的时候遇到一个坑,现在记录一下。 代码中使用 getchar() 处理字符输入,用 scanf() 处理数字输入。 getchar() 读取每个字符,包括空格、制表符和换行符; 而 scanf() 在读取数字时则会跳过空格、 制表符和换行符。 比如下面这个程序,读入一个字符和两个数字,然后根据输入的两...

IDEA创建SpringBoot项目整合JPA,连接Oracle数据库,使用Swagger进行测试

一、信息 IDEA  2019.1 jdk   1.8 Oracle  11.2.0.1.0 二、创建Spring Boot项目 1、选择JDK 2、根据你的公司名填写Group名,Artifact名不能包含大写,IDEA会报告含有非法字符,这一点挺奇怪的 3、选择依赖,这里我们选择Spring Data JPA和Spring Web,点击next 4...