oracle函数总结
1、rpad函数
rpad函数从右边对字符串使用指定的字符进行填充
rpad(string,padded_length,[pad_string])
string 表示:被填充的字符串
padded_length 表示:字符的长度,是返回的字符串的数量,如果这个数量比原字符串的长度要短,rpad函数将会把字符串截取成从左到右的n个字符;
pad_string 是个可选参数,这个字符串是要粘贴到string的右边,如果这个参数未写,lpad函数将会在string的右边粘贴空格。
例如:
rpad('tech', 7); 将返回'tech '
rpad('tech', 2); 将返回'te'
rpad('tech', 8, '0'); 将返回'tech0000'
rpad('tech on the net', 15, 'z'); 将返回 'tech on the net'
rpad('tech on the net', 16, 'z'); 将返回 'tech on the netz'
SQL> select rpad('aa',5)||decode('bbb',null,' ',rpad('bbb',8))||rpad('cccc',12) from dual;
RPAD('AA',5)||DECODE('BBB',NUL
------------------------------
aa bbb cccc
2、decode函数
在逻辑编程中,经常用到If – Then –Else 进行逻辑判断。在DECODE的语法中,实际上就是这样的逻辑处理过程。它的语法如下:
DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )
Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。当每个value值被测试,如果value的值为if1,Decode 函数的结果是then1;如果value等于if2,Decode函数结果是then2;等等。事实上,可以给出多个if/then 配对。如果value结果不等于给出的任何配对时,Decode 结果就返回else 。
需要注意的是,这里的if、then及else 都可以是函数或计算表达式。
含义解释:
DECODE(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
该函数的含义如下:
IF 条件=值1 THEN
RETURN(翻译值1)
ELSIF 条件=值2 THEN
RETURN(翻译值2)
......
ELSIF 条件=值n THEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
END IF
3、to_number,to_char函数
to_number(文字,’格式’)
to_char(数字, ‘格式’)
to_char()这次只介绍to_char(数字, ‘格式’),明天介绍日期转化的。
主要格式如下:
9 表示有效位数
0 数字前用0补足位数
B 用空格补足位数
$ 在数字前加美元号
L 在数字前加本地货币符号
. 小数点位置
, 分格符位置
MI 负数时在最后边加负号
PR 负数用<>括起来
S 在前面加符号
EEEE 科学计数法
V 把原数字乘以10的N次方(N为V后面的位数)
to_number函数如下:
Converts a string to the NUMBER data type |
TO_NUMBER(<value>[, <format>, <NLS parameter>]) RETURN NUMBER |
CREATE TABLE test ( |
|
Converts a HEX number to FLOAT |
TO_NUMBER(<value>, <format>); |
SELECT TO_NUMBER('0A', 'XX') |
|
Converts a HEX number to DECIMAL |
TO_NUMBER(<binary_float | binary_double | number>, |
SELECT TO_NUMBER(100000,'XXXXXXXX') |
在垃圾短信项目中,用到了to_number方法,表中starttime字段存的是某一时间到1994年1月1日 00:00:00的秒数,字段类型为RAW,由于项目的原因,要涉及到改字段的时间比较。考虑了半天,将某一时间到1994年1月1日 00:00:00的秒数传入当做参数,然后将starttime转换成16进制,再通过to_number转换成数字,然后再比较。SQL语句如下:
select * from black_user_info where TO_NUMBER(rawtohex(starttime),'XXXXXXXX') >496022400;
但是经过测试发现 select * from black_user_info where TO_NUMBER(starttime,'XXXXXXXX') >496022400 好像也有同样的效果。raw类型和16进制有很密切的关系,因为在数据库里面,数字的raw类型就是按照16进制保存的,具体的关系就不是很清楚了,目前基本上一个ORACLE盲。
1. 9, 0 ,B 测试
SELECT
to_char(123.45, '0009.9'),
to_char(123.45, '9999.9'),
to_char(123.45, 'B999.9')
FROM dual;
结果为
TO_CHAR(123.45,'0009.9') TO_CHAR(123.45,'9999.9') TO_CHAR(123.45,'B999.9')
------------------------ ------------------------ ------------------------
0123.5 123.5 123.5
2. $, L 测试
SELECT
to_char(123.45, '$9999.9'),
to_char(123.45, 'L9999.9')
FROM dual;
结果为
TO_CHAR(123.45,'$9999.9') TO_CHAR(123.45,'L9999.9')
------------------------- -------------------------
$123.5 ¥123.5
3. .,, 测试
SELECT
to_char(123.45, '9999.99'),
to_char(1233123.45, '9,999,999.99')
FROM dual;
结果为
TO_CHAR(123.45,'9999.99') TO_CHAR(1233123.45,'9,999,999.
------------------------- ------------------------------
123.45 1,233,123.45
4. MI,PR 测试
SELECT
to_char(-123.45, '9999.99MI'),
to_char(-123.45, '9999.99PR')
FROM dual;
结果为
TO_CHAR(-123.45,'9999.99MI') TO_CHAR(-123.45,'9999.99PR')
---------------------------- ----------------------------
123.45- <123.45>
5. S,EEEE,V 测试
SELECT
to_char(123.45, 'S9999.99'),
to_char(12345, '99.99EEEE'),
to_char(123, '9999V99')
FROM dual;
结果为
TO_CHAR(123.45,'S9999.99') TO_CHAR(12345,'99.99EEEE') TO_CHAR(123,'9999V99')
-------------------------- -------------------------- ----------------------
+123.45 1.23E+04 12300
转载于:https://www.cnblogs.com/dongxiaoguang/archive/2013/03/18/2966643.html
oracle函数总结相关推荐
- mybatis可以用oracle,使用MyBatis调用oracle函数(基于注释)
我需要使用注解在MyBatis中调用Oracle函数.使用MyBatis调用oracle函数(基于注释) 我的映射: @Select("{ CALL #{outParam, jdbcType ...
- oracle增量 mysql_是否有任何mysql / Oracle函数给予增量号。基于另一列相似值的一列?...
我有兴趣知道是否有任何MySQL / Oracle函数给增量号.在另一列相似的值的基础上的一列? 就像在我的下面的代码中,我有order_primary列,其中包含订单号.所以基于此我们可以确定有多少 ...
- 使用oracle 游标修改数据,Oracle 函数施行修改和游标传递
Oracle 函数执行修改和游标传递 ORA-14551:不能在查询语句中执行dml语句,开始误以为函数里不能执行DML或DDL语句,后查到前辈通过采用自治事务解决,在此基础上演例 传递SQL语句对数 ...
- oracle 函数索引
http://bbs.51cto.com/thread-26271-1.html 如何创建oracle函数索引 Oracle8i的很重要的一个新特性就是增加了function-based index这 ...
- oracle+查询主机地址,oracle函数:获取Internet主机名和ip地址
您可能感兴趣的话题: Oracle 核心提示:oracle函数获取Internet主机名和ip地址 Oracle包utl_inaddr 作用:用于取得局域网或Internet环境中的主机名和IP地址. ...
- row number函数 oracle,oracle函数 ROW_NUMBER()
[语法]ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2) [功能]表示根据COL1分组,在分组内部根据 COL2排序,而这个值就表示每组内部排序后 ...
- [转载]oracle函数listagg的使用说明
工作中经常遇到很多需求是这样的,根据条件汇总某些字段,比如我遇到的是,我们公司有三个投资平台,同一个客户拿手机号在三个平台都注册了,但注册过的用户名不一样,显示的时候需要根据手机号显示所有注册过的名称 ...
- jdbc oracle 函数,Oracle系列:(33)JDBC访问Oracle的存储过程和存储函数
1.存储过程 1.1.准备SQL-- 定义存储过程 create or replace procedure get_rax(salary in number,rax out number) as -- ...
- oracle函数建立码值,Oracle函数与存储过程
1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 D ...
- oracle强大函数,oracle 函数排行
oracle 函数排名 SQL> SELECT empno,ename,sal,rank() over(ORDER BY nvl(sal,0) DESC) 排序 from emp; EMPNO ...
最新文章
- linux高级数据存储
- 前端面试http和https的区别
- 《代码整洁之道:程序员的职业素养》一一1.5 参考文献
- oracle sql为null值,在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办
- webpack如何将css文件分离的,webpack--css:Less文件的打包和分离(八)
- STM32使用PWM输入模式测试频率和占空比
- LeetCode 64.最小路径和(动态规划)
- MYSQL数据库的数据完整性
- AJAX 简单例程示例
- 人工智能5秒免费抠图软件将改变设计行业???
- 最新勒索软件WannaCrypt病毒感染前后应对措施
- 统计学③——总体与样本的差异在哪里
- 从零开始掌握微服务软件测试
- 工业级ADSL有线路由器/远程视频监控专用路由器
- Win10 Microsoft Edge浏览器播放视频出现绿屏情况解决之一
- 亮眼财报业绩背后,难掩富途控股估值陷阱
- 基于TI AM5728 + Artix-7 FPGA开发板(DSP+ARM) 5G通信测试手册
- 20考研数一137分考研数学经验分享
- 【C语言】案例二十九 综合案例——体育成绩管理系统
- DNS和Web服务的配置与访问