oracle转换函数
oracle 转二进制函数
oracle 转二进制函数
在Oracle数据库中,可以使用TO_BINARY_DOUBLE和
TO_BINARY_FLOAT函数将数字转换为二进制格式。
这些函数将数字
转换为IEEE 754标准的二进制双精度和单精度格式。
例如,可以使
用以下语法将数字转换为二进制双精度格式:
sql.
SELECT TO_BINARY_DOUBLE(123.45) FROM dual;
这将返回123.45的二进制双精度表示。
类似地,可以使用以下
语法将数字转换为二进制单精度格式:
sql.
SELECT TO_BINARY_FLOAT(123.45) FROM dual;
这将返回123.45的二进制单精度表示。
这些函数可以帮助在Oracle数据库中进行数字的二进制表示转换。
需要注意的是,这些
函数返回的是内部表示的二进制形式,而不是可读的二进制字符串。
除了以上的函数,Oracle还提供了一些其他函数和操作符来处理二进制数据,比如RAW和BLOB数据类型,以及相关的函数和操作符来进行二进制数据的操作和转换。
在处理二进制数据时,需要注意数据的长度和格式,以及相关的编码和解码操作,以确保数据的正确处理和存储。
总之,在Oracle数据库中,可以使用TO_BINARY_DOUBLE和TO_BINARY_FLOAT函数将数字转换为二进制格式,同时还有其他函数和操作符可以处理二进制数据,需要根据具体的需求选择合适的方法来进行处理。
oracle将一串数字转换为字符串的函数
oracle将一串数字转换为字符串的函数Oracle是一种常用的关系型数据库管理系统,它提供了丰富的函数和工具来处理数据。
其中一个常用的函数是将一串数字转换为字符串的函数。
在本文中,我们将介绍如何使用Oracle中的函数来实现这个功能。
在Oracle中,可以使用TO_CHAR函数将数字转换为字符串。
TO_CHAR函数的语法如下:TO_CHAR(number, [format], [nlsparam])其中,number是要转换的数字,format是可选的格式化字符串,nlsparam是可选的国家语言设置参数。
首先,我们来看一个简单的例子。
假设我们有一个数字列num,其中包含了一些整数值。
我们想要将这些整数值转换为字符串,并将其存储在一个新的列str中。
我们可以使用如下的SQL语句来实现:```UPDATE table_nameSET str = TO_CHAR(num)```在这个例子中,我们使用了TO_CHAR函数将num列中的每个整数值转换为字符串,并将其存储在str列中。
通过执行这个UPDATE语句,我们可以将数字转换为字符串并更新表中的数据。
除了简单的转换,TO_CHAR函数还可以使用格式化字符串来控制转换的结果。
例如,我们可以使用格式化字符串来指定转换后字符串的长度、小数位数、千位分隔符等。
下面是一些常用的格式化字符串的示例:- 'FM9999':将数字转换为至少4位的字符串,不包含千位分隔符。
- 'FM9999.99':将数字转换为至少4位整数和2位小数的字符串,不包含千位分隔符。
- 'FM9,999':将数字转换为至少4位的字符串,包含千位分隔符。
例如,我们可以使用如下的SQL语句将一个数字列num转换为至少4位整数和2位小数的字符串,并将其存储在str列中:```UPDATE table_nameSET str = TO_CHAR(num, 'FM9999.99')```通过执行这个UPDATE语句,我们可以将数字转换为指定格式的字符串并更新表中的数据。
oracle的pivot函数
oracle的pivot函数Oracle的PIVOT函数是一种非常强大的数据转换工具,它可以将行数据转换为列数据,使得数据分析和报表生成更加方便和灵活。
本文将详细介绍Oracle的PIVOT函数的使用方法和实际应用场景。
一、什么是PIVOT函数PIVOT函数是Oracle数据库中的一个聚合函数,它可以将行数据转换为列数据。
它基于一个或多个列的值动态生成列,并以这些列作为新的列名,然后将行数据填充到对应的列中。
这样就可以将原本以行形式存储的数据转换为以列形式存储的数据。
二、PIVOT函数的语法和用法PIVOT函数的语法如下:```SELECT *FROM (SELECT 列1, 列2, 列3 FROM 表名)PIVOT (聚合函数(列n)FOR 列n IN (列值1, 列值2, 列值3, ... ))```其中,聚合函数可以是SUM、COUNT、AVG等常见的聚合函数,列n 是需要转换为列的列名,列值1、列值2、列值3等是列n中可能出现的不同取值。
可以根据实际需求自行修改。
三、实际应用场景PIVOT函数在实际应用中非常有用,可以解决很多数据分析和报表生成的问题。
下面我们通过实际案例来说明其用法和应用场景。
假设我们有一个订单表,其中包含了订单的编号、日期和金额等信息。
现在我们需要将订单按日期分组,并统计每天的订单金额总额。
使用PIVOT函数可以很方便地实现这个需求。
我们创建一个名为orders的表,包含了订单的编号、日期和金额等字段。
然后,我们可以使用下面的SQL语句来实现需求:```SELECT *FROM (SELECT TO_CHAR(订单日期, 'YYYY-MM-DD') AS 日期, 订单金额FROM orders)PIVOT (SUM(订单金额)FOR 日期IN ('2021-01-01', '2021-01-02', '2021-01-03', ... ))```以上SQL语句中,我们先将日期字段转换为指定的格式,然后使用PIVOT函数对订单金额进行求和,并以日期作为列名。
oracle转16进制函数
oracle转16进制函数在Oracle数据库中,可以使用内置函数TO_HEX来将数值转换为16进制表示。
TO_HEX函数接受一个数值作为输入,并返回其对应的16进制字符串。
以下是TO_HEX函数的语法:TO_HEX(numeric_value)numeric_value参数是一个数值(整数或浮点数),可以是数据库列、常量或表达式。
示例:```SELECT TO_HEX(10) AS hex_valueFROM dual;```输出结果:```HEX_VALUE----------A```在上面的示例中,TO_HEX函数将十进制数值10转换为16进制字符串"A"。
如果输入的数值是浮点数,TO_HEX函数会将其四舍五入为最接近的整数,然后进行转换。
TO_HEX函数还可以用于将日期和时间类型的值转换为16进制字符串。
以下是一些示例:```-- 将日期转换为16进制SELECT TO_HEX(TO_DATE('2022-01-01', 'YYYY-MM-DD')) AS hex_valueFROM dual;```输出结果:```HEX_VALUE----------323032322D30312D3031-- 将时间转换为16进制SELECT TO_HEX(TO_DATE('13:45:30', 'HH24:MI:SS')) AS hex_valueFROM dual;```输出结果:```HEX_VALUE----------31333A34353A3330```除了TO_HEX函数外,Oracle还提供了其他一些相关的16进制函数,用于处理16进制字符串。
以下是一些常用的函数:- HEXTORAW: 将16进制字符串转换为原始二进制数据。
- RAWTOHEX: 将原始二进制数据转换为16进制字符串。
- UTL_RAW.CAST_TO_RAW: 将字符串转换为原始二进制数据。
oracle 类型转换函数
To_number:转换成数值类型,如:To_number('1234.5'),结果:1234.5
自动类型转换
Oracle可以自动根据具体情况进行如下的转换:
ceil:求大于等于某数的最小整数,如:ceil(2.35) 3
floor:求小于等于某数的最大整数,如:floor(2.35) 2
round:按指定精度对十进制数四舍五入,如:round(45.923, 1),结果,45.9
round(45.923, 0),结果,46
round(45.923, −1),结果,50
输入并执行查询:
Sql代码
SELECT ename, round(sysdate-hiredate) DAYS
FROM emp
WHERE deptno = 10;
SELECT ename, round(sysdate-hiredate) DAYS
自动转换数值型数据到字符型。
执行以下查询:
Sql代码
SELECT '12.5'||11 FROM dual;
SELECT '12.5'||11 FROM dual;
结果为:
Sql代码
'12.5'
------
12.511
concat:连接两个字符串 concat('SQL', ' Course') SQL Course
substr:给出起始位置和长度,返回子字符串,如:substr('String',1,3) Str
Oracle日期时间字符转换函数
Oracle⽇期时间字符转换函数--1. Oracle⽇期转字符select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') time from dual;--2.Oracle字符转⽇期只能字符串转⽇期select to_date('2020-06-09 17:47:14', 'yyyy-mm-dd hh24:mi:ss') time from dual;Oracle Trunc函数--TRUNC(for dates)--为指定元素⽽截去的⽇期值。
--格式:TRUNC(date[,fmt])--使⽤select trunc(sysdate) from dual --2011-3-18 今天的⽇期为2011-3-18select trunc(sysdate, 'mm') from dual --2011-3-1 返回当⽉第⼀天.select trunc(sysdate,'yy') from dual --2011-1-1 返回当年第⼀天select trunc(sysdate,'dd') from dual --2011-3-18 返回当前年⽉⽇select trunc(sysdate,'yyyy') from dual --2011-1-1 返回当年第⼀天select trunc(sysdate,'d') from dual --2011-3-13 (星期天)返回当前星期的第⼀天select trunc(sysdate, 'hh') from dual --2011-3-18 14:00:00 当前时间为14:41select trunc(sysdate, 'mi') from dual --2011-3-18 14:41:00 TRUNC()函数没有秒的精确--TRUNC(number,num_digits)--Number 需要截尾取整的数字。
Oracle行列转换函数--Pivot和Unpivot
Oracle⾏列转换函数--Pivot和UnpivotPivot 和 Unpivot使⽤简单的 SQL 以电⼦表格类型的交叉表报表显⽰任何关系表中的信息,并将交叉表中的所有数据存储到关系表中。
Pivot如您所知,关系表是表格化的,即,它们以列-值对的形式出现。
假设⼀个表名为 CUSTOMERS。
COPYCopied to ClipboardError: Could not CopySQL> desc customersName Null? TypeCUST_ID NUMBER(10)CUST_NAME VARCHAR2(20)STATE_CODE VARCHAR2(2)TIMES_PURCHASED NUMBER(3)选定该表:select cust_id, state_code, times_purchasedfrom customersorder by cust_id;输出结果如下:CUST_ID STATE_CODE TIMES_PURCHASED1 CT 12 NY 103 NJ 24 NY 4...and so on ...SQL> desc customersName Null? TypeCUST_ID NUMBER(10)CUST_NAME VARCHAR2(20)STATE_CODE VARCHAR2(2)TIMES_PURCHASED NUMBER(3)选定该表:select cust_id, state_code, times_purchasedfrom customersorder by cust_id;输出结果如下:CUST_ID STATE_CODE TIMES_PURCHASED1 CT 12 NY 103 NJ 24 NY 4...and so on ...注意数据是如何以⾏值的形式显⽰的:针对每个客户,该记录显⽰了客户所在的州以及该客户在商店购物的次数。
oracle转换函数
转换函数转换函数将值从一种数据类型转换为另外一种数据类型。
在Oracle 中常用的转换函数主要有三个:TO_CHAR、TO_DATE 和TO_NUMBER。
1、TO_CHAR() 本函数又可以分三小类,分别是<1>转换字符‐>字符TO_CHAR(c):将nchar,nvarchar2,clob,nclob类型转换为char类型;例如:S ELECT TO_CHAR('AABBCC')FROM d ual;<2>转换时间‐>字符TO_CHAR(d[,fmt]):将指定的时间按照指定格式转换为varchar2类型;例如:S ELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss')FROM d ual;<3>转换数值‐>字符TO_CHAR(n[,fmt]):将指定数值n按照指定格式fmt转换为varchar2类型并返回;例如:S ELECT TO_CHAR(-100,'L99G999D99MI')FROM d ual;2、T O_DATE(c[,fmt[,nls]])将char,nchar,varchar2,nvarchar2转换为日期类型,如果fmt参数不为空,则按照fmt中指定格式进行转换。
注意这里的fmt参数。
如果ftm为'J'则表示按照公元制(J ulian day)转换,c则必须为大于0并小于5373484的正整数。
例如:SELECT TO_DATE(2454336,'J')FROM d ual;SELECT TO_DATE('2007-8-23 23:25:00','yyyy-mm-dd hh24:mi:ss') FROM d ual;3、T O_NUMBER(c[,fmt[,nls]])将char,nchar,varchar2,nvarchar2型字串按照fmt中指定格式转换为数值类型并返回。
oracle最全函数大全(分析函数-聚合函数-转换函数-日期型函数-字符型函数-数值型函数-其他函数)
oracle函数大全(分析函数,聚合函数,转换函数,日期型函数,字符型函数,数值型函数,其他函数)oracle函数大全 (1)oracle分析函数--SQL*PLUS环境 (1)oracle 10g函数大全--聚合函数 (19)oracle 10g函数大全--转换函数 (23)oracle 10g函数大全--日期型函数 (40)oracle 10g函数大全--字符型函数 (45)oracle 10g函数大全--数值型函数 (55)oracle 10g函数大全--其他函数 (58)oracle分析函数--SQL*PLUS环境一、总体介绍1.1.分析函数如何工作语法 FUNCTION_NAME(<参数>,…) OVER (<PARTITION BY 表达式,…> <ORDER BY 表达式 <ASC DESC> <NULLS FIRST NULLS LAST>> <WINDOWING子句>) PARTITION子句ORDER BY子句 WINDOWING子句缺省时相当于RANGE UNBOUNDED PRECEDING1. 值域窗(RANGE WINDOW)RANGE N PRECEDING 仅对数值或日期类型有效,选定窗为排序后当前行之前,某列(即排序列)值大于/小于(当前行该列值–/+ N)的所有行,因此与ORDER BY子句有关系。
2. 行窗(ROW WINDOW)ROWS N PRECEDING 选定窗为当前行及之前N行。
还可以加上BETWEEN AND 形式,例如RANGE BETWEEN m PRECEDING AND n FOLLOWING 函数 AVG(<distinct all> eXPr)一组或选定窗中表达式的平均值 CORR(expr, expr) 即COVAR_POP(exp1,exp2) / (STDDEV_POP(expr1) * STDDEV_POP(expr2)),两个表达式的互相关,-1(反相关) ~1(正相关),0表示不相关COUNT(<distinct> <*> <expr>) 计数COVAR_POP(expr, expr) 总体协方差COVAR_SAMP(expr, expr) 样本协方差CUME_DIST 累积分布,即行在组中的相对位置,返回0 ~ 1DENSE_RANK 行的相对排序(与ORDER BY搭配),相同的值具有一样的序数(NULL计为相同),并不留空序数FIRST_VALUE 一个组的第一个值LAG(expr, <offset>, <default>) 访问之前的行,OFFSET是缺省为1 的正数,表示相对行数,DEFAULT是当超出选定窗范围时的返回值(如第一行不存在之前行)LAST_VALUE 一个组的最后一个值LEAD(expr, <offset>, <default>) 访问之后的行,OFFSET是缺省为1 的正数,表示相对行数,DEFAULT是当超出选定窗范围时的返回值(如最后行不存在之前行)MAX(expr) 最大值MIN(expr) 最小值NTILE(expr) 按表达式的值和行在组中的位置编号,如表达式为4,则组分4份,分别为1 ~ 4的值,而不能等分则多出的部分在值最小的那组PERCENT_RANK 类似CUME_DIST,1/(行的序数 - 1)RANK 相对序数,答应并列,并空出随后序号RATIO_TO_REPORT(expr) 表达式值 / SUM(表达式值)ROW_NUMBER 排序的组中行的偏移STDDEV(expr) 标准差STDDEV_POP(expr) 总体标准差STDDEV_SAMP(expr) 样本标准差SUM(expr) 合计VAR_POP(expr) 总体方差VAR_SAMP(expr) 样本方差VARIANCE(expr) 方差REGR_ xxxx(expr, expr) 线性回归函数REGR_SLOPE:返回斜率,等于COVAR_POP(expr1, expr2) / VAR_POP(expr2) REGR_INTERCEPT:返回回归线的y截距,等于AVG(expr1) - REGR_SLOPE(expr1, expr2) * AVG(expr2)REGR_COUNT:返回用于填充回归线的非空数字对的数目REGR_R2:返回回归线的决定系数,计算式为:If VAR_POP(expr2) = 0 then return NULLIf VAR_POP(expr1) = 0 and VAR_POP(expr2) != 0 then return 1If VAR_POP(expr1) > 0 and VAR_POP(expr2 != 0 thenreturn POWER(CORR(expr1,expr),2)REGR_AVGX:计算回归线的自变量(expr2)的平均值,去掉了空对(expr1, expr2)后,等于AVG(expr2)REGR_AVGY:计算回归线的应变量(expr1)的平均值,去掉了空对(expr1, expr2)后,等于AVG(expr1)REGR_SXX:返回值等于REGR_COUNT(expr1, expr2) * VAR_POP(expr2)REGR_SYY:返回值等于REGR_COUNT(expr1, expr2) * VAR_POP(expr1)REGR_SXY: 返回值等于REGR_COUNT(expr1, expr2) * COVAR_POP(expr1, expr2) 首先:创建表及接入测试数据。
Oracle日期函数和转换函数
Oracle⽇期函数和转换函数⼀、⽇期函数⽇期函数⽤于处理date类型的数据,两个⽇期相减返回⽇期之间相差的天数。
⽇期不允许做加法运算,⽆意义。
常见代表符号:yyyy 年,mm ⽉,dd ⽇,hh ⼩时,mi 分钟,ss 秒,day 星期默认情况下⽇期格式是dd-mon-yy即12-3⽉-19(1)sysdate: 该函数返回系统时间(2)months_between(m,n)⽇期m和⽇期n相差多少⽉数(3)add_months(d,n)在⽇期d上增加n个⽉数(4)next_day(d, '星期*') 指定⽇期d下⼀个星期*对应的⽇期(5)last_day(d):返回指定⽇期d所在⽉份的最后⼀天(6)extract(month from d)从⽇期d上提取⽉份数(7)round(d,time)⽇期的四舍五⼊(8)trunc(d,time)⽇期的截断以下是⽇期函数的⼀些例⼦及效果图:各种情况例⼦:months_between select months_between('01-9⽉-95','11-1⽉-94') from dual; --19.6774193548387add_months select add_months('11-2⽉-18',6) from dual; --2018/8/11next_day select next_day('11-2⽉-18','星期六') from dual; --2018/2/17last_day select last_day('11-2⽉-18') from dual; --2018/2/28round 四舍五⼊⽉份 25-7⽉-18 select round(to_date('25-7⽉-2018'), 'month') from dual; --2018/8/1round 四舍五⼊年份 25-7⽉-18 select round(to_date('25-7⽉-2018’), 'year') from dual; --2019/1/1trunc 截断⽉份 25-7⽉-18 select trunc(to_date('25-7⽉-2018'), 'month') from dual; --2018/7/1trunc 截断年份 25-7⽉-18 select trunc(to_date('25-7⽉-2018'), 'year') from dual; --2018/1/1trunc 当前⽇期的00点00分00秒 select trunc(sysdate) from dual;sql⽐较⽇期今天之前:select * from table where update < to_date('2012-09-07 00:00:00', 'yyyy-MM-dd HH24:mi:ss');精确时间:select * from table where update = to_date('2012-09-07 00:00:00', 'yyyy-MM-dd HH24:mi:ss');某段时间内:select * from table where update <= to_date('2012-09-07 00:00:00', 'yyyy-MM-dd HH24:mi:ss')and update >= to_date('2010-02-07 00:00:00', 'yyyy-MM-dd HH24:mi:ss')eg:查找已经⼊职8个⽉多的员⼯SQL>select * from empwhere sysdate>=add_months(hiredate,8);eg:显⽰满10年服务年限的员⼯的姓名和受雇⽇期。
Oracle数据库中chr()、ascii()、asciistr()、convert()函数的使用
Oracle数据库中chr()、ascii()、asciistr()、convert()函数的使用文档作者: 叶玉虎创建日期: 2016-08-22更新日期: 2016-08-22Version: 1.文档控制更改记录审阅分发人员参考文献一.Oracle数据库中chr()、ascii()、asciistr()、convert()函数的使用在oracle数据库中有很多的转换函数,主要有chr()、ascii()、asciistr()、cast()、chartorowid()、convert()、rowidtochar()、to_char()、to_date()、to_number()等,其中to_char()、to_date()、to_number()是最常见也是最常用的,chr()一般常出现在控制字符串输出的时候。
本文主要总结chr()、ascii()、asciistr()、convert()这四个转换函数:1、chr()chr()函数是将ASCII码转换为字符:ASCII码->字符,ASCII码对应的字符可以参见本文后面的ASCII编码表。
图1:chr()示例2、ascii()ascii()函数是chr()的反函数,它表示将字符转换为ASCII码:字符-> ASCII码。
图2:ascii()示例3、asciistr()asciistr()函数是将字符串转换为ascii字符串,如下图3:图3:asciistr()示例关于asciistr()函数,我在网上看到一篇文章说可以用asciistr()函数来判断一个字符串中是否含有中文字符,我看了其思路,挺有参考价值的,大概是这样的:图4:用asciistr()函数判断一个字符串中是否含有中文字符根据上图4可以看出,如果是中文字符,那么用asciistr()转换以后,其形式是\4E2D这样的,前面有斜杠\,但是并不是所有带有\都是中文字符,因为斜杠\本身用asciistr()转换后,其结果是\005C,也是带有\的,所以对于这个字符要特别注意下。
Oracle中的二进制、八进制、十进制、十六进制相互转换函数
今天在网上看到一篇关于在oracle中对各种进制数进行转换的帖子,觉得不错,也比较全面,几乎涵盖了经常用到的所有转换。
转过来学习一下,也方便以后查询。
========================================================================== ========大家经常遇到进制转换的问题,网上搜到的转换只是部分十进制与其它进制的转换,所以我把自己写的转换函数提供给大家,4种进制共12个转换函数,虽然有的转换直接使用to_char()和to_number()就可以实现,但我还是把它们整理到一起,使用和查找都方便。
部分函数需要先创建type_str_agg类型和f_stragg函数才能使用,这两个对象的代码也附在之后。
CREATE OR REPLACE PACKAGE pkg_number_trans ISFUNCTION f_bin_to_oct(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_bin_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_bin_to_hex(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_oct_to_bin(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_oct_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_oct_to_hex(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_hex_to_bin(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_hex_to_oct(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_hex_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_dec_to_bin(p_int IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_dec_to_oct(p_int IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_dec_to_hex(p_int IN VARCHAR2) RETURN VARCHAR2;END pkg_number_trans;/CREATE OR REPLACE PACKAGE BODY pkg_number_trans ISFUNCTION f_bin_to_oct(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_bin_to_oct-- 对象描述: 二进制转换八进制-- 输入参数: p_str 二进制字符串-- 返回结果: 八进制字符串-- 测试用例: SELECT pkg_number_trans.f_bin_to_oct('11110001010') FROM dual;-- 备注: 需要定义f_stragg函数和type_str_agg类型----------------------------------------------------------------------------------------------------------------------v_return VARCHAR2(4000);v_bin VARCHAR2(4000);BEGINv_bin := substr('00' || p_str, -3 * ceil(length(p_str) / 3));SELECT f_stragg(data1) INTO v_returnFROM (SELECT (CASE upper(substr(v_bin, (rownum - 1) * 3 + 1, 3))WHEN '000' THEN '0'WHEN '001' THEN '1'WHEN '010' THEN '2'WHEN '011' THEN '3'WHEN '100' THEN '4'WHEN '101' THEN '5'WHEN '110' THEN '6'WHEN '111' THEN '7'END) data1FROM dualCONNECT BY rownum <= length(v_bin) / 3);RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_bin_to_oct;FUNCTION f_bin_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_bin_to_dec-- 对象描述: 二进制转换十进制-- 输入参数: p_str 二进制字符串-- 返回结果: 十进制字符串-- 测试用例: SELECT pkg_number_trans.f_bin_to_dec('11110001010') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);BEGINSELECT SUM(data1) INTO v_returnFROM (SELECT substr(p_str, rownum, 1) * power(2, length(p_str) - rownum) data1 FROM dualCONNECT BY rownum <= length(p_str));RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_bin_to_dec;FUNCTION f_bin_to_hex(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_bin_to_hex-- 对象描述: 二进制转换十六进制-- 输入参数: p_str 二进制字符串-- 返回结果: 十六进制字符串-- 测试用例: SELECT pkg_number_trans.f_bin_to_oct('11110001010') FROM dual;-- 备注: 需要定义f_stragg函数和type_str_agg类型---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);v_bin VARCHAR2(4000);BEGINv_bin := substr('000' || p_str, -4 * ceil(length(p_str) / 4));SELECT f_stragg(data1) INTO v_returnFROM (SELECT (CASE upper(substr(v_bin, (rownum - 1) * 4 + 1, 4))WHEN '0000' THEN '0'WHEN '0001' THEN '1'WHEN '0010' THEN '2'WHEN '0011' THEN '3'WHEN '0100' THEN '4'WHEN '0101' THEN '5'WHEN '0110' THEN '6'WHEN '0111' THEN '7'WHEN '1000' THEN '8'WHEN '1001' THEN '9'WHEN '1010' THEN 'A'WHEN '1011' THEN 'B'WHEN '1100' THEN 'C'WHEN '1101' THEN 'D'WHEN '1110' THEN 'E'WHEN '1111' THEN 'F'END) data1FROM dualCONNECT BY rownum <= length(v_bin) / 4);RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_bin_to_hex;FUNCTION f_oct_to_bin(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_oct_to_bin-- 对象描述: 八进制转换二进制-- 输入参数: p_str 八进制字符串-- 返回结果: 二进制字符串-- 测试用例: SELECT pkg_number_trans.f_oct_to_bin('3612') FROM dual;-- 备注: 需要定义f_stragg函数和type_str_agg类型---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);BEGINSELECT to_char(to_number(f_stragg(data1))) INTO v_returnFROM (SELECT (CASE upper(substr(p_str, rownum, 1))WHEN '0' THEN '000'WHEN '1' THEN '001'WHEN '2' THEN '010'WHEN '3' THEN '011'WHEN '4' THEN '100'WHEN '5' THEN '101'WHEN '6' THEN '110'WHEN '7' THEN '111'END) data1FROM dualCONNECT BY rownum <= length(p_str));RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_oct_to_bin;FUNCTION f_oct_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_oct_to_dec-- 对象描述: 八进制转换十进制-- 输入参数: p_str 八进制字符串-- 返回结果: 十进制字符串-- 测试用例: SELECT pkg_number_trans.f_oct_to_dec('3612') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);BEGINSELECT SUM(data1) INTO v_returnFROM (SELECT substr(p_str, rownum, 1) * power(8, length(p_str) - rownum) data1 FROM dualCONNECT BY rownum <= length(p_str));RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_oct_to_dec;FUNCTION f_oct_to_hex(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_oct_to_bin-- 对象描述: 八进制转换十六进制-- 输入参数: p_str 八进制字符串-- 返回结果: 十六进制字符串-- 测试用例: SELECT pkg_number_trans.f_oct_to_hex('3612') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);v_bin VARCHAR2(4000);BEGINSELECT pkg_number_trans.f_oct_to_bin(p_str) INTO v_bin FROM dual;SELECT pkg_number_trans.f_bin_to_hex(v_bin) INTO v_return FROM dual;RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_oct_to_hex;FUNCTION f_dec_to_bin(p_int IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_dec_to_bin-- 对象描述: 十进制转换二进制-- 输入参数: p_str 十进制字符串-- 返回结果: 二进制字符串-- 测试用例: SELECT pkg_number_trans.f_dec_to_bin('1930') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);v_hex VARCHAR2(4000);BEGINSELECT pkg_number_trans.f_dec_to_hex(p_int) INTO v_hex FROM dual;SELECT pkg_number_trans.f_hex_to_bin(v_hex) INTO v_return FROM dual;RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_dec_to_bin;FUNCTION f_dec_to_oct(p_int IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_dec_to_oct-- 对象描述: 十进制转换八进制-- 输入参数: p_str 十进制字符串-- 返回结果: 八进制字符串-- 测试用例: SELECT pkg_number_trans.f_dec_to_oct('1930') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);v_bin VARCHAR2(4000);BEGINSELECT pkg_number_trans.f_dec_to_bin(p_int) INTO v_bin FROM dual;v_bin := substr('00' || v_bin, -3 * ceil(length(v_bin) / 3));SELECT f_stragg(data1) INTO v_returnFROM (SELECT (CASE upper(substr(v_bin, (rownum - 1) * 3 + 1, 3))WHEN '000' THEN '0'WHEN '001' THEN '1'WHEN '010' THEN '2'WHEN '011' THEN '3'WHEN '100' THEN '4'WHEN '101' THEN '5'WHEN '110' THEN '6'WHEN '111' THEN '7'END) data1FROM dualCONNECT BY rownum <= length(v_bin) / 3);RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_dec_to_oct;FUNCTION f_dec_to_hex(p_int IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_dec_to_oct-- 对象描述: 十进制转换十六进制-- 输入参数: p_str 十进制字符串-- 返回结果: 十六进制字符串-- 测试用例: SELECT pkg_number_trans.f_dec_to_hex('1930') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);BEGINSELECT upper(TRIM(to_char(p_int,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'))) INTO v_return FROM dual;RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_dec_to_hex;FUNCTION f_hex_to_bin(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_dec_to_oct-- 对象描述: 十六进制转换二进制-- 输入参数: p_str 十六进制字符串-- 返回结果: 二进制字符串-- 测试用例: SELECT pkg_number_trans.f_hex_to_oct('78A') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);BEGINSELECT to_char(to_number(f_stragg(data1))) INTO v_returnFROM (SELECT (CASE upper(substr(p_str, rownum, 1))WHEN '0' THEN '0000'WHEN '1' THEN '0001'WHEN '2' THEN '0010'WHEN '3' THEN '0011'WHEN '4' THEN '0100'WHEN '5' THEN '0101'WHEN '6' THEN '0110'WHEN '7' THEN '0111'WHEN '8' THEN '1000'WHEN '9' THEN '1001'WHEN 'A' THEN '1010'WHEN 'B' THEN '1011'WHEN 'C' THEN '1100'WHEN 'D' THEN '1101'WHEN 'E' THEN '1110'WHEN 'F' THEN '1111'END) data1FROM dualCONNECT BY rownum <= length(p_str));RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_hex_to_bin;FUNCTION f_hex_to_oct(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_dec_to_oct-- 对象描述: 十六进制转换八进制-- 输入参数: p_str 十六进制字符串-- 返回结果: 八进制字符串-- 测试用例: SELECT pkg_number_trans.f_hex_to_oct('78A') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);v_bin VARCHAR2(4000);BEGINSELECT pkg_number_trans.f_hex_to_bin(p_str) INTO v_bin FROM dual;SELECT pkg_number_trans.f_bin_to_oct(v_bin) INTO v_return FROM dual;RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_hex_to_oct;FUNCTION f_hex_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_hex_to_dec-- 对象描述: 十六进制转换十进制-- 输入参数: p_str 十六进制字符串-- 返回结果: 十进制字符串-- 测试用例: SELECT pkg_number_trans.f_hex_to_dec('78A') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);BEGINSELECT SUM(data1) INTO v_returnFROM (SELECT (CASE upper(substr(p_str, rownum, 1))WHEN 'A' THEN '10'WHEN 'B' THEN '11'WHEN 'C' THEN '12'WHEN 'D' THEN '13'WHEN 'E' THEN '14'WHEN 'F' THEN '15'ELSE substr(p_str, rownum, 1)END) * power(16, length(p_str) - rownum) data1FROM dualCONNECT BY rownum <= length(p_str));RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_hex_to_dec;END pkg_number_trans;/CREATE OR REPLACE TYPE type_str_agg AS OBJECT(total VARCHAR2(4000),STATIC FUNCTION odciaggregateinitialize(sctx IN OUT type_str_agg) RETURN NUMBER,MEMBER FUNCTION odciaggregateiterate(SELF IN OUT type_str_agg,VALUE IN VARCHAR2) RETURN NUMBER,MEMBER FUNCTION odciaggregateterminate(SELF IN type_str_agg,returnvalue OUT VARCHAR2,flags IN NUMBER) RETURN NUMBER,MEMBER FUNCTION odciaggregatemerge(SELF IN OUT type_str_agg,ctx2 IN type_str_agg) RETURN NUMBER)/CREATE OR REPLACE TYPE BODY type_str_agg ISSTATIC FUNCTION odciaggregateinitialize(sctx IN OUT type_str_agg) RETURN NUMBER ISBEGINsctx := type_str_agg(NULL);RETURN odciconst.success;END;MEMBER FUNCTION odciaggregateiterate(SELF IN OUT type_str_agg,VALUE IN VARCHAR2) RETURN NUMBER ISBEGINSELF.total := SELF.total || VALUE;RETURN odciconst.success;END;MEMBER FUNCTION odciaggregateterminate(SELF IN type_str_agg,returnvalue OUT VARCHAR2,flags IN NUMBER) RETURN NUMBER ISBEGINreturnvalue := SELF.total;RETURN odciconst.success;END;MEMBER FUNCTION odciaggregatemerge(SELF IN OUT type_str_agg,ctx2 IN type_str_agg) RETURN NUMBER ISBEGINSELF.total := SELF.total || ctx2.total;RETURN odciconst.success;END;END;/CREATE OR REPLACE FUNCTION f_stragg(p_input VARCHAR2) RETURN VARCHAR2 PARALLEL_ENABLEAGGREGATE USING type_str_agg;/。
oracle转换函数
Mocha Softw are Co.,Ltd.
客户 质量 团结 创新
2
DECODE
根据值的不同,将 CHAR、VARCH AR2 或 NUMBER转换为几种不同的字符串或 NUMBER 之 一。这是一个功能非常强的if-then-else 函数。
DECOMPSOE
将任意数据类型的串转换为用与输入相同的字符集规范分解后的 Unicode串
TO_DSINTERVAL
将 CHAR、VARCH AR2 或 NVARCH AR2 数据类型的字符串转换为 INTERVAL DAY TO SECOND 类型的字符串
TO_LOB
将 LONG转换为 LOB,作为 insert as select 的一部分
TO_ MULTI_BYTE
TRANSLATE
将串中的字符变换为不同的字符
UNISTR
将串转换为数据库 Unicode字符集中的Unicode 字符
TRANSLATE( string, if, then ):查看 string 中的每个字符,然后检查 if 抗癌字符是否存在。如果存在,就在 if 中标出找到的字符的位置,然后查看 then 中相同的位置。将用 then 中该位置的字符替换string 中相应的字符。
SQL> select TRANSLATE(87654321, 123456789, 'ABCDEFGHI') from dual; TRANSLAT -------HGFEDCBA
DECODE( value, if1, then1, if2, then2, if3, then3,…,else):TRANSLATE 是逐字地替换 ,DECODE 可以看作是逐值的替 换,DECODE 回味某个字段中的每个值在一系 列的 if/then 测试中查找匹 配值。
ORACLE常用函数——转换函数
ORACLE常⽤函数——转换函数------------------------------------------类型转换函数------------------------------------------------⾃动类型转换, ORACLE 可以⾃动根据具体情况进⾏如下转换:*字符串到数值*字符串到⽇期*数值到字符串*⽇期到字符串EX:--*字符串到数值SELECT'3.14159'+20FROM DUAL;SELECT'3.1T'+20FROM DUAL; --报错:⽆效数字,即字符串必须能转换为数值类型才能进⾏操作--*数值到字符串SELECT'100'||124FROM 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 ELEVENQ 季度,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⽇为032SELECT 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)。
oracle convert参数
【主题】Oracle中的Convert参数详解【内容】1. 介绍Oracle中的Convert参数在Oracle数据库中,Convert参数是一个常用的函数,主要用于将一个数据类型转换为另一个数据类型。
通过Convert参数,我们可以在查询过程中对数据类型进行转换,满足不同的需求。
2. Convert参数的语法在Oracle中,Convert参数的语法如下:CONVERT (expression, datatype)其中,expression表示要进行转换的数据,datatype表示要转换成的数据类型。
通过这个语法,我们可以灵活地进行数据类型的转换操作。
3. Convert参数的使用方法使用Convert参数非常简单,只需要在需要进行数据类型转换的地方,将需要转换的数据和目标数据类型作为参数传入即可。
下面是一个简单的示例:SELECT CONVERT('12345', NUMBER) FROM dual;这个示例中,我们将一个字符类型的数据'12345'转换为数字类型。
通过Convert参数,我们可以方便地实现数据类型之间的转换。
4. Convert参数的常见应用场景Convert参数通常用于以下几个常见的应用场景:- 数据类型转换:在数据库查询过程中,有时候需要将一个数据类型转换为另一个数据类型,这时候就可以使用Convert参数来实现。
- 数据格式转换:有时候我们需要对日期、时间等数据进行格式转换,将其转换为特定的格式,这时候也可以使用Convert参数来完成。
- 数据单位转换:在一些业务场景中,可能需要将数据的单位进行转换,比如将温度由摄氏度转换为华氏度,这时候也可以使用Convert参数来实现。
5. Convert参数的注意事项在使用Convert参数时,需要注意以下几点:- 数据类型兼容性:在进行数据类型转换时,需要确保目标数据类型与原数据类型是兼容的,否则可能会出现转换失败的情况。
oracle中convert函数用法
oracle中convert函数用法Oracle中的convert函数是用来将一个表达式的数据类型转换为另一个数据类型的函数。
该函数可以将字符类型(如VARCHAR2类型)、日期类型和数字类型转换为其他类型。
convert函数的语法如下:CONVERT(e某pr1, data_type [, format])其中,e某pr1表示要转换的表达式,data_type表示要转换的目标数据类型,format是可选的,表示将数据转换为目标类型的格式。
以下是convert函数的常用数据类型和用法。
1.字符类型VARCHAR2和CLOB是Oracle中常见的字符类型。
在使用convert函数时,可以将它们转换为其他字符类型或数字类型。
例如,将一个字符串变为大写字母:SELECT CONVERT('hello', 'CHAR(5)') AS UpperCase FROM DUAL;结果为:HELLO2.日期类型日期类型在Oracle中有三种:DATE、TIMESTAMP和INTERVAL。
使用convert函数时,可以将它们转换为其他日期类型或字符类型。
例如,将一个日期转换为格式化的字符类型:SELECT CONVERT(TO_DATE('2022-02-22', 'yyyy-mm-dd'),'VARCHAR2(20)', 'dd/mm/yyyy') FROM DUAL;结果为:22/02/20223.数字类型Oracle中的数字类型包括:NUMBER、BINARY_FLOAT和BINARY_DOUBLE。
转换时,可以将它们转换为其他数字类型或字符类型。
例如,将一个整数转换为字符类型:SELECTCONVERT(123,'VARCHAR2(5)')FROMDUAL;结果为:123需要注意的是,convert函数不会隐式转换数据类型,因此需要显式指定目标数据类型和格式。
ORACLE常用数值函数、转换函数、字符串函数
ORACLE常⽤数值函数、转换函数、字符串函数本⽂更多将会介绍三思在⽇常中经常会⽤到的,或者虽然很少⽤到,但是感觉挺有意思的⼀些函数。
分⼆类介绍,分别是: 著名函数篇 -经常⽤到的函数 ⾮著名函数篇-即虽然很少⽤到,但某些情况下却很实⽤注:N表⽰数字型,C表⽰字符型,D表⽰⽇期型,[]表⽰内中参数可被忽略,fmt表⽰格式。
单值函数在查询中返回单个值,可被应⽤到select,where⼦句,start with以及connect by ⼦句和having⼦句。
(⼀).数值型函数(Number Functions)数值型函数输⼊数字型参数并返回数值型的值。
多数该类函数的返回值⽀持38位⼩数点,诸如:COS, COSH, EXP, LN, LOG, SIN, SINH, SQRT, TAN, and TANH ⽀持36位⼩数点。
ACOS, ASIN, ATAN, and ATAN2⽀持30位⼩数点。
1、MOD(n1,n2) 返回n1除n2的余数,如果n2=0则返回n1的值。
例如:SELECT MOD(24,5) FROM DUAL;2、ROUND(n1[,n2]) 返回四舍五⼊⼩数点右边n2位后n1的值,n2缺省值为0,如果n2为负数就舍⼊到⼩数点左边相应的位上(虽然oracle documents上提到n2的值必须为整数,事实上执⾏时此处的判断并不严谨,即使n2为⾮整数,它也会⾃动将n2取整后做处理,但是我⽂档中其它提到必须为整的地⽅需要特别注意,如果不为整执⾏时会报错的)。
例如:SELECT ROUND(23.56),ROUND(23.56,1),ROUND(23.56,-1) FROM DUAL;3、TRUNC(n1[,n2] 返回截尾到n2位⼩数的n1的值,n2缺省设置为0,当n2为缺省设置时会将n1截尾为整数,如果n2为负值,就截尾在⼩数点左边相应的位上。
例如:SELECT TRUNC(23.56),TRUNC(23.56,1),TRUNC(23.56,-1) FROM DUAL;(⼆).字符型函数返回字符值(Character Functions Returning Character Values) 该类函数返回与输⼊类型相同的类型。
oracle 10g函数大全--转换函数
oracle 10g函数大全--转换函数chartorowid(c1)【功能】转换varchar2类型为rowid值【参数】c1,字符串,长度为18的字符串,字符串必须符合rowid格式【返回】返回rowid值【示例】SELECT chartorowid('AAAADeAABAAAAZSAAA') FROM DUAL;【说明】在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,r owid确定了每条记录是在Oracle中的哪一个数据文件、块、行上。
在重复的记录中,可能所有列的内容都相同,但rowid不会相同.ROWIDTOCHAR(rowid)【功能】转换rowid值为varchar2类型【参数】rowid,固定参数【返回】返回长度为18的字符串【示例】SELECT ROWIDTOCHAR(rowid) FROM DUAL;【说明】在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,r owid确定了每条记录是在Oracle中的哪一个数据文件、块、行上。
在重复的记录中,可能所有列的内容都相同,但rowid不会相同.CONVERT(c1,set1,set2)【功能】将源字符串c1 从一个语言字符集set2转换到另一个目的set1字符集【参数】c1,字符串,set1,set2为字符型参数【返回】字符串【示例】select convert('strutz','we8hp','f7dec') "conversion" from dual;conver------strutzselect convert(name,'us7ascii','zhs16cgb231280') "conversion" from du al;HEXTORAW(c1)【功能】将一个十六进制构成的字符串转换为二进制【参数】c1,十六进制的字符串【返回】字符串【示例】select HEXTORAW('A123') from dual;RAWTOHEX(c1)【功能】将一个二进制构成的字符串转换为十六进制【参数】c1,二进制的字符串【返回】字符串【示例】select RAWTOHEX('A123') from dual;TO_CHAR(x[[,c2],C3])【功能】将日期或数据转换为char数据类型【参数】x是一个date或number数据类型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
------
strutz
select convert(name,'us7ascii','zhs16cgb231280') "conversion" from dual;
HEXTORAW(c1)
【功能】将一个十六进制构成的字符串转换为二进制
【参数】c1,十六进制的字符串
【返回】字符串
【示例】
【参数】
x是一个date或number数据类型。
c2为格式参数
c3为NLS设置参数
如果x为日期nlsparm=NLS_DATE_LANGUAGE 控制返回的月份和日份所使用的语言。
如果x为数字nlsparm=NLS_NUMERIC_CHARACTERS 用来指定小数位和千分位的分隔符,以及货币符号。
计算转换类:EEEE,RN,V,X
正负符号:MI,PR,S
其它类:B
正统类:TM
【示例】
to_char(1210.73, '9999.9') 返回 '1210.7'
to_char(1210.73, '9,999.99') 返回 '1,210.73'
to_char(1210.73, '$9,999.00') 返回 '$1,210.73'
select HEXTORAW('A123') from dual
RAWTOHEX(c1)
【功能】将一个二进制构成的字符串转换为十六进制
【参数】c1,二进制的字符串
【返回】字符串
【示例】
select RAWTOHEX('A123') from dual;
TO_CHAR(x[[,c2],C3])
【功能】将日期或数据转换为char数据类型
to_char(21, '000099') 返回 '000021'
to_char(852,'xxxx') 返回' 354'
【说明2】x为日期型,c2可用参数
序号
格式
简例
说明
1
- / , . ; :
略
时间分隔符号,除了标准的几个,还允许用文字作为分割符号。
"text"
例如 to_char(sysdate,'YYYY"年"mm"月"dd"日"')=2008年04月24日
10
G(分组符号)
999G999
是逗号(,)的的ISO标准,作为分组符号使用,可以放在多个地方使用.
TO_CHAR(123456,'999G9G99')=123,4,56
注意事项:同第八项 -D, 此外如果要转换出小数点,则要和D配合使用,不能和点号配合.
11
L(本地货币符号)
'L999'
是C的本地版本.可以放在整个格式的最前面和最后面.
7
C(国际货币符号)
'C9999'
在特定的位置返回一个ISO货币符号(就是NLS_ISO_CURRENCY参数所代表的值)
TO_CHAR(1233,'C9999')='CNY1234' ,这是新的国际标准RMB,关于这个可查询"国际货币符号"
注意事项:只能出现在整数部位第一位.
可以通过alter session set NLS_ISO_CURRENCY='JAPAN';来修改当前会话的设置.
B.C.
5
CC
返回世纪,以阿拉伯数字表示
SCC
如果年的后两位介于01-99那么,返回前两位+1,否则返回前两位
6
D
一周之中的某天,返回的是序号1-7
7
DAY
一周之中的某天,不过返回的是星期几而已,这和语言设置有关系,在中国环境 NLS_DATE_LANGUAGE=SIMPLIFIED CHINESE ,用星期一到星期天表示
注意事项:这是一个强制的符号,对应位没有,则以'o'填充,这是9很大不同地方
5
9
'999.99'
9.在小数位,则表示转换为对应字符,如果没有则以0表示;在整数位,没有对应则不填充字符.
to_char(123,'999.99')=123.00; TO_CHAR(123,'99999.9')=123.0;
注意事项:只能放在格式尾巴
13
PR(符号)
9999PR
是表达负数的另外一种方式.如果是正数,则头部加上空格;如果是负数,则用小简括号<>把数字包起来.
TO_CHAR(-1234.89,'9G999D00PR')=<1,234.89>
注意事项:同12
14
RN(rn)
RN(rn)
把整数(1-3999)转换为罗马字符.RN表示转为大写,rn表示小写的.
alter session set nls_numeric_characters='!,'; to_char(1234.34,'9999d99')=1234!34
9
EEEE(科学计算符)
9.9EEEE
科学计算符号
TO_CHAR(2008032001,'9.9EEEE')='2.01E+09',由于是科学计算方法,所以小数位前面加一个9或者0即可,多个是没有意义的.
限制:除了DL,其它什么的都不能设置。
12
DY
日期的简称,就是星期几(当然这指的是中国环境下)
13
E
纪元简称,但是只适合以下集中日历:日本皇室,中华民国,太过佛历
14
EE
纪元全程,适合情况同E
15
FF [1..9]
就是毫秒,如果不更上数字就是用默认的精度。
只能用于timestamp类型的。
16
FM
值得注意的一个函数:不返回任何内容。
变态的例子是 to_char(1234,'9,9,9,9').
注意事项:只能出现在整数部分.
2
.(点号)
'99.99'
点号,不要念为"句号",句号是个圆圈,点好只能出现在小数点对应的地方.只能出现一次.
to_char(1234.34,'9,9,9,9.99')
注意事项:只能出现在一个地方,就是原来数据小数点位置
8
DD
月份中的某天(1-31)
9
DDD
年份中的某天(1-366)
10
DL
'DL'
返回长的日期格式。受到NLS_TERRITORY,NLS_LANGUAGE参数控制。例 2008年4月28日 星期一
限制:除了DL,其它什么的都不能设置。
11
DS
返回短的日期格式。受到NLS_TERRITORY,NLS_LANGUAGE参数控制。 例如 2008-04-28
8
D(ISO 小数位符号)
'999D99'
这是"点号"的国际版本(ISO),作用等同于点号,也是只能出现一次.所不同的是,数据库会根据NLS_NUMERIC_CHARACTER的参数值来设置内容.默认的这个值是点号.
注意事项:没有特别需要一般不要用这个格式符号.也不要轻易修改参数值.
也可用alter sesssion set 来修改.
NLS_NUMERIC_CHARACTERS ="dg", NLS_CURRENCY="string"
【返回】varchar2字符型
【说明1】x为数据型时
c1格式表参考:
序号
格式
简例
说明
1
,(逗号)
'9999,999'
逗号,一般以千分位出现,作为分组符号使用.如果需要您也可以当作是十分位,百分位出现,可以出现N次,视乎数字的大小而定.
TO_CHAR(5,'9V')=5*1=5;
TO_CHAR(5,'9V9')=5*10=50
TO_CHAR(5,'9V99')=500
TO_CHAR(50,'9V99')='######' 9的个数不够
注意事项:格式中不能和小数表达写在一起,但是可以混合货币等。
19
X
xxxx
转换为16进制。
TO_CHAR(100,'XX')= 64
在重复的记录中,可能所有列的内容都相同,但rowid不会相同.
ROWIDTOCHAR(rowid) 。。
【功能】转换rowid值为varchar2类型
【参数】rowid,固定参数
【返回】返回长度为18的字符串
【示例】
SELECT ROWIDTOCHAR(rowid) FROM DUAL;
【说明】
在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是在Oracle中的哪一个数据文件、块、行上。
3
$(美元符号)
'$999.99'
美元.其实你可以放在任意地方(在10G下)
to_char(1234.34,'9,9,9,9.$99')
注意事项:只能出现一次.
4
0(零)
'0999.99'
零.在对应位置返回对应的字符,如果没有则以'0'填充.