`
hepu
  • 浏览: 55721 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

oracle辅助函数

阅读更多

1、DECODE(exp,s1,r1,s2,r2..s,r[,def]) 可以把它理解成一个增强型的if else,只不过它并不通过多行语句,而是在一个函数内实现if else的功能。

  exp做为初始参数。s做为对比值,相同则返回r,如果s有多个,则持续遍历所有s,直到某个条件为真为止,否则返回默认值def(如果指定了的话),如果没有默认值,并且前面的对比也都没有为真,则返回空。

  毫无疑问,decode是个非常重要的函数,在实现行转列等功能时都会用到,需要牢记和熟练使用。

  例如:select decode('a2','a1','true1','a2','true2','default') from dual;

  2、GREATEST(n1,n2,...n) 返回序列中的最大值

  例如:SELECT GREATEST(15,5,75,8) "Greatest" FROM DUAL;

  3、LEAST(n1,n2....n) 返回序列中的最小值

  例如:SELECT LEAST(15,5,75,8) LEAST FROM DUAL;

  4、NULLIF(c1,c2)

  Nullif也是个很有意思的函数。逻辑等价于:CASE WHEN c1 = c2 THEN NULL ELSE c1 END

  例如:SELECT NULLIF('a','b'),NULLIF('a','a') FROM DUAL;

  5、NVL(c1,c2) 逻辑等价于IF c1 is null THEN c2 ELSE c1 END。c1,c2可以是任何类型。如果两者类型不同,则oracle会自动将c2转换为c1的类型。

  例如:SELECT NVL(null, '12') FROM DUAL;

  6、NVL2(c1,c2,c3) 大家可能都用到nvl,但你用过nvl2吗?如果c1非空则返回c2,如果c1为空则返回c3

  例如:select nvl2('a', 'b', 'c') isNull,nvl2(null, 'b', 'c') isNotNull from dual;

  7、SYS_CONNECT_BY_PATH(col,c) 该函数只能应用于树状查询。返回通过c1连接的从根到节点的路径。该函数必须与connect by 子句共同使用。

  例如:

  create table tmp3(
  rootcol varchar2(10),
  nodecol varchar2(10)
  );
  insert into tmp3 values ('','a001');
  insert into tmp3 values ('','b001');
  insert into tmp3 values ('a001','a002');
  insert into tmp3 values ('a002','a004');
  insert into tmp3 values ('a001','a003');
  insert into tmp3 values ('a003','a005');
  insert into tmp3 values ('a005','a008');
  insert into tmp3 values ('b001','b003');
  insert into tmp3 values ('b003','b005');
  select lpad(' ', level*10,'=') ||'>'|| sys_connect_by_path(nodecol,'/')
  from tmp3
  start with rootcol = 'a001'
  connect by prior nodecol =rootcol;

转换函数将指定字符从一种类型转换为另一种,通常这类函数遵循如下惯例:函数名称后面跟着待转换类型以及输出类型。

 

 

  1、BIN_TO_NUM(n1,n2...n) 将一组位向量转换为等价的十进制形式。

  例如:SELECT BIN_TO_NUM(1,1,0) FROM DUAL;

  2、CAST(c as newtype) 将指定字串转换为指定类型,基本只对字符类型有效,比如char,number,date,rowid等。此类转换有一个专门的表列明了哪种类型可以转换为哪种类型,此处就不作酹述。

  例如:SELECT CAST('1101' AS NUMBER(5)) FROM DUAL;

  3、CHARTOROWID(c) 将字符串转换为rowid类型

  例如:SELECT CHARTOROWID('A003D1ABBEFAABSAA0') FROM DUAL;

  4、ROWIDTOCHAR(rowid) 转换rowid值为varchar2类型。返回串长度为18个字节。

  例如:SELECT ROWIDTOCHAR(rowid) FROM DUAL;

  5、TO_MULTI_BYTE(c) 将指定字符转换为全角并返回char类型字串

  例如:SELECT TO_MULTI_BYTE('ABC abc 中华') FROM DUAL;

  6、TO_SINGLE_BYTE(c) 将指定字符转换为半角并返回char类型字串

  例如:SELECT TO_SINGLE_BYTE('ABC abc中华') FROM DUAL;

 

 

1、COALESCE(n1,n2,....n) 返回序列中的第一个非空值

  例如:SELECT COALESCE(null,5,6,null,9) FROM DUAL;

  2、DUMP(exp[,fmt[,start[,length]]])

  dump是个功能非常强悍的函数,对于深入了解oracle存储的人而言相当有用。所以对于我们这些仅仅只是应用的人而言就不知道能将其应用于何处了。此处仅介绍用法,不对其功能做深入分析。

  如上所示,dump拥有不少参数。其本质是以指定格式,返回指定长度的exp的内部表示形式的varchar2值。fmt含4种格式:8||10||16||17,分别表示8进制,10进制,16进制和单字符,默认为10进制。start参数表示开始位置,length表示以,分隔的字串数。

  例如:SELECT DUMP('abcdefg',17,2,4) FROM DUAL;

  3、EMPTY_BLOB,EMPTY_CLOB 这两个函数都是返回空lob类型,通常被用于insert和update等语句以初始化lob列,或者将其置为空。EMPTY表示LOB已经被初始化,只不过还没有用来存储数据。

  4、NLS_CHARSET_NAME(n) 返回指定数值对应的字符集名称。

  例如:SELECT NLS_CHARSET_NAME(1) FROM DUAL;

  5、NLS_CHARSET_ID(c) 返回指定字符对应的字符集id。

  例如:SELECT NLS_CHARSET_ID('US7ASCII') FROM DUAL;

  6、NLS_CHARSET_DECL_LEN(n1,n2) 返回一个NCHAR值的声明宽度(以字符为单位).n1是该值以字节为单位的长度,n2是该值的字符集ID

  例如:SELECT NLS_CHARSET_DECL_LEN(100, nls_charset_id('US7ASCII')) FROM DUAL;

 

 

4、BITAND(n1,n2) 位与运算,这个太有意思了,虽然没想到可能用到哪里,详细说明一下:

  假设3,9做位与运算,3的二进制形式为:0011,9的二进制形式为:1001,则结果是0001,转换成10进制数为1。

  例如:SELECT BITAND(3,9) FROM DUAL;

  5、CEIL(n) 返回大于或等于n的最小的整数值

  例如:SELECT ceil(18.2) FROM DUAL;

  考你一下,猜猜ceil(-18.2)的值会是什么呢

  6、FLOOR(n) 返回小于等于n的最大整数值

  例如:SELECT FLOOR(2.2) FROM DUAL;

  再猜猜floor(-2.2)的值会是什么呢

  7、BIN_TO_NUM(n1,n2,....n) 二进制转向十进制

  例如:SELECT BIN_TO_NUM(1),BIN_TO_NUM(1,0),BIN_TO_NUM(1,1) FROM DUAL;

分享到:
评论

相关推荐

    sql oracle 辅助工具

    本人手写。。需要源码的留言。自己可以进行添加功能! 支持 sql2000 sql2005 sql2008 oracle ------------- 帮助你写 sql:视图 存储...sql2005辅助,sql2008辅助,oracle辅助,sql oracle代码生成,sql oracle代码提示

    oracle系统内置函数大全

    Oracle数据库系统内置了大量函数,这些函数可以分为多个类别,例如字符函数、数字函数、日期函数、转换函数、分组函数以及其他辅助函数等。以下是对每个类别中一些常用函数的详细介绍: 字符函数 1. ASCII函数:...

    Oracle中实现datadiff函数

    首先,我们需要创建两个辅助函数`CDate`和`CDateTime`,它们用于将字符串转换为日期格式。这是因为Oracle中的日期函数通常接受日期类型作为输入参数,而实际应用中可能需要处理的是字符串格式的日期数据。 ##### ...

    Oracle常用函数和使用方法

    其中,`SIGN()`函数会根据输入的值返回-1(负数)、0(零)或1(正数),从而辅助`DECODE`函数进行判断。 #### 三、数值函数:ABS, CEIL, MOD, ROUND, TRUNC 1. **ABS**:返回数值的绝对值。 ```sql SELECT ABS...

    oracle函数介绍(2) 非著名函数之单值函数.doc

    第二篇 非著名函数之单值函数 (一).数值型函数(Number Functions) (二).字符型函数返回字符值(Character Functions Returning Character Values) ...其它辅助函数(Miscellaneous Single-Row Functions)

    oracle函数介绍(1) 著名函数之单值函数.doc

    第一篇 著名函数之单值函数 (一).数值型函数(Number Functions) (二).字符型函数返回字符值(Character Functions Returning Character Values) ...其它辅助函数(Miscellaneous Single-Row Functions)

    oracle姓名中文转全拼函数

    `fn_nlssort`是一个辅助函数,其目的是对输入的汉字字符串应用上述的排序规则。 函数通过循环遍历输入的字符串,每次处理一个汉字。对于每个汉字,`v_compare`变量存储其对应的拼音首字母,`v_return`用于积累转换...

    oracle辅助工具

    "Oracle辅助工具"就是这样一个为了提升数据库操作效率而设计的工具。本文将深入解析这款工具,尤其是配合PL/SQL Developer 9.0.6版本的使用。 PL/SQL Developer是由Allround Automations公司开发的一款强大的Oracle...

    解决Oracle没有WM_CONCAT函数.zip

    OWMCTAB可能是主函数的定义,而OWMAGGRS和OWMAGGRB可能是辅助函数或存储过程,用于处理特定的聚合逻辑。PL/SQL块(.plb)是Oracle的编译后二进制格式,通常用于存储在数据库中以便于调用和执行。 在Oracle中,如果...

    重写oracle wm_contact函数

    ### 定义辅助函数 - **FUN_STRSPLIT_TABLE**: 这个函数用于将输入的字符串按指定的分隔符分割,并将结果存储在一个表类型中返回。它通过循环处理字符串,不断提取子串并将其加入结果集中。 - **FUN_JOIN_STR**: ...

    Oracle树查询及相关函数

    除了基本的查询语法,Oracle还提供了一些辅助函数来处理树结构,如`SYS_CONNECT_BY_PATH`可以返回节点在整个树路径中的位置,`LEVEL`返回节点在树中的深度,`CONNECT_BY_ROOT`则用于获取树的根节点。 在进行树查询...

    oracle汉字转拼音的函数代码

    包中的其他辅助函数可能会处理特定的汉字转换逻辑,如查找汉字的拼音信息、处理多音字等。 接下来是“getHzPY.sql”,这个文件可能是实现汉字转拼音的独立函数。该函数可能使用了类似于Oracle的UTL_I18N库,该库...

    oracle日历转化成农历

    在Oracle中,虽然没有内置的直接转换函数来实现这一功能,但可以通过自定义函数或者利用现有的开源存储过程来实现这一转换。下面我们将详细介绍如何在Oracle中进行阳历到农历的转换。 首先,我们需要理解阳历和农历...

    三思笔记之Oracle函数.rar

    9. **系统信息函数**:DBMS_METADATA.GET_DDL()获取对象的DDL语句,DBMS_OUTPUT.PUT_LINE()输出调试信息,提供数据库元数据和调试辅助。 10. **窗口函数**:ROW_NUMBER(), RANK(), DENSE_RANK(), LAG(), LEAD()等在...

    Oracle经典教程1——走进Oracle

    3. **其他辅助服务**:如Oracle的管理工具和服务等。 #### Oracle启动和关闭 启动和关闭Oracle数据库涉及到以下几个关键步骤: 1. **启动**:可以通过命令行工具或图形化界面启动数据库。通常的命令包括`startup`...

    oracle反编译工具

    总之,“Oracle反编译工具”是一个强大的辅助工具,它能帮助我们克服加密代码带来的挑战,但同时也需要我们在使用过程中保持警惕,尊重和保护知识产权。理解和掌握如何有效利用这类工具,对于提升数据库管理效率和...

    oracle数字转换中文

    1. **初始化变量**:首先定义了几个用于存储中间计算结果和最终输出结果的变量,包括`c_money`用于存储数字字符串,`b_string`用于构建最终的中文大写字符串,以及其他辅助变量如`l_money`、`l_sign`等。 2. **...

    利用ORACLE实现数据的抽样

    此外,Oracle还支持`DBMS_RANDOM`包,这是一个强大的随机数生成器,可以用来辅助实现更复杂的抽样需求。如: ```sql SELECT * FROM (SELECT * FROM MEMBER ORDER BY DBMS_RANDOM.VALUE) WHERE ROWNUM ; ``` 这将从`...

    OracleHelper

    OracleHelper 是一个针对Oracle数据库操作的辅助类库,它的设计目标是简化开发人员与Oracle数据库之间的交互,提供一套已经预封装好的方法,用于执行常见的数据库操作,如增加(Insert)、删除(Delete)、查询...

    ORACLE数据升级辅助

    Oracle数据升级辅助是一款工具,主要用于协助数据库管理员进行Oracle数据库的日常维护和版本更新工作。它简化了脚本的执行流程,使得数据升级过程更加高效和便捷。以下是对这个工具及其相关知识点的详细说明: 1. *...

Global site tag (gtag.js) - Google Analytics