oracle函数

Oracle中Instr函数的用法

空扰寡人 提交于 2020-03-12 19:24:14
INSTR   (源字符串, 目标字符串, 起始位置, 匹配序号)   在 Oracle /PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,就是说从字符的开始   到字符的结尾就结束。   语法如下:   instr( string1, string2 [, start_position [, nth_appearance ] ] )   参数分析:   string1   源字符串,要在此字符串中查找。   string2   要在string1中查找的字符串.   start_position   代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。   nth_appearance   代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。   注意:   如果String2在String1中没有找到,instr函数返回0.   示例:   SELECT instr('syranmo','s') FROM dual; -- 返回 1   SELECT instr('syranmo','ra') FROM dual; -- 返回 3   1 SELECT

Oracle中instr 函数的详解

霸气de小男生 提交于 2020-03-12 19:22:02
INSTR   (源字符串, 目标字符串, 起始位置, 匹配序号)   在 Oracle /PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,就是说从字符的开始   到字符的结尾就结束。   语法如下:   instr( string1, string2 [, start_position [, nth_appearance ] ] )   参数分析:   string1   源字符串,要在此字符串中查找。   string2   要在string1中查找的字符串.   start_position   代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。   nth_appearance   代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数 系统 会报错。   注意:   如果String2在String1中没有找到,instr函数返回0.   示例:   SELECT instr('syranmo','s') FROM dual; -- 返回 1   SELECT instr('syranmo','ra') FROM dual; -- 返回 3   1 SELECT

十九、oracle pl/sql简介

不打扰是莪最后的温柔 提交于 2020-03-12 05:57:26
一、pl/sql 是什么 pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展。 pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大。 二、为什么要学pl/sql 1.提高应用程序的运行性能 2.模块化的设计思想(分页的过程,订单的过程,转账的过程。。) 3.减少网络传输量 4.提高安全性(sql会包括表名,有时还可能有密码,传输的时候会泄露。PL/SQL就不会) 三、Oracle为什么在PL/SQL developer执行很快,用c# oracleclient执行就慢 因为PL/SQL这门语言是专门用于在各种环境下对Oracle数据库进行访问。由于该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理。 而c#语言是微软的产品,它在连接ORACLE的时候先存到“连接池”中,所以第一次会慢点,但是当你的Web程序没有重起的时候,以后的速度就不会慢了。 四、使用pl/sql的缺点 移植性不好(换数据库就用不了) 五、pl/sql理解 1)、存储过程、函数、触发器是pl/sql编写的 2)、存储过程、函数、触发器是存在oracle中的 3)、pl/sql是非常强大的数据库过程语言 4)、存储过程、函数可以在java中调用 六

Oracle存储过程

无人久伴 提交于 2020-03-12 04:01:25
文章目录 一、存储过程的概念 二、存储过程的创建、调用和权限 1、创建存储过程 2、存储过程的调用 3、存储过程的权限 三、删除存储过程 四、PL/SQL语言 五、应用经验 1、存储过程的优点 2、存储过程的缺点 3、我的看法 六、Oracle的包 七、版权声明 一、存储过程的概念 存储过程(stored procedure)是Oracle数据库中为了完成某功能的PL/SQL代码集,就像没有返回值的自定义函数。 二、存储过程的创建、调用和权限 1、创建存储过程 create or replace procedure 存储过程名 ( 参数 1 模式 数据类型 , . . . . . . ) as / is -- 定义局部变量 变量 1 数据类型 ; . . . . . . begin -- 实现存储过程功能的PL / SQL代码。 . . . . . . exception -- 异常处理的PL / SQL代码。 . . . . . . end ; / 1)参数的模式有三种: in :只读模式,在函数中,参数只能被引用/读取,不能改变它的值。 out :只写模式,参数只能被赋值,不能被引用/读取。 in out :可读可写。 参数的模式可以不写,缺省为in,out和in out两种模式极少使用。 2)as/is二选一,在这里没有区别。 3)可以不定义局部变量。 4)可以没有异常

MySQL与Oracle 差异比较之二基本语法

青春壹個敷衍的年華 提交于 2020-03-11 17:59:29
基本语法 编号 类别 ORACLE MYSQL 注释 1 变量的声明方式不同 li_index NUMBER := 0 DECLARE li_index INTEGER DEFAULT 0 1. mysql 使用DECLARE定义局部变量. 定义变量语法为: DECLARE var_name[,...] type [DEFAULT value] 要给变量提供一个默认值,需要包含一个DEFAULT子句。值可以被指定为一个表达式,不需要为一个常数。如果没有DEFAULT子句,初始值为NULL。 2 变量的赋值方式不同 lv_inputstr := iv_inputstr SET lv_inputstr = iv_inputstr 1. oracle变量赋值使用:= mysql 使用赋值使用set关键字. 将一个值赋给一个变量时使用"=". 3 跳出(退出)语句不同 EXIT; LEAVE procedure name; 1. oracle: 如果exit语句在循环中就退出当前循环.如果exit语句不再循环中,就退出当前过程或方法. Mysql: 如果leave语句后面跟的是存储过程名,则退出当前存储过程. 如果leave语句后面跟的是lable名. 则退出当前lable. while 条件 loop exit; end loop; label_name:while 条件 do

Oracle游标的使用

泄露秘密 提交于 2020-03-11 09:59:21
转至http://www.cnblogs.com/adslg/archive/2010/08/17/1801469.html 游标的概念: 游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率。 游标有两种类型:显式游标和隐式游标。在前述程序中用到的SELECT...INTO...查询语句,一次只能从数据库中提取一行数据,对于这种形式的查询和DML操作,系统都会使用一个隐式游标。但是如果要提取多行数据,就要由程序员定义一个显式游标,并通过与游标有关的语句进行处理。显式游标对应一个返回结果为多行多列的SELECT语句。 游标一旦打开,数据就从数据库中传送到游标变量中,然后应用程序再从游标变量中分解出需要的数据,并进行处理。 隐式游标 如前所述,DML操作和单行SELECT语句会使用隐式游标,它们是: * 插入操作:INSERT。 * 更新操作:UPDATE。 * 删除操作:DELETE。 * 单行查询操作:SELECT ... INTO ...。 当系统使用一个隐式游标时,可以通过隐式游标的属性来了解操作的状态和结果,进而控制程序的流程

Oracle常用函数

China☆狼群 提交于 2020-03-10 18:10:46
1.NVL(eExpression1, eExpression2) 函数: 参数: eExpression1, eExpression2 如 果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1 和 eExpression2 可以是任意一种数据类型。如果 eExpression1 与 eExpression2 的结果皆为 null 值,则 NVL( ) 返回 .NULL.。 返回值类型 :字符型、日期型、日期时间型、数值型、货币型、逻辑型或 null 值 说明: 在不支持 null 值或 null 值无关紧要的情况下,可以使用 NVL( ) 来移去计算或操作中的 null 值。 select nvl(a.name,'空得') as name from student a join school b on a.ID=b.ID 注意:两个参数得类型要匹配 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL, 我们称它为空,ORACLE中,含有空值的表列长度为零。 ORACLE允许任何一种数据类型的字段为空,除了以下两种情况: 1、主键字段(primary key), 2

oracle中nvl()函数

天大地大妈咪最大 提交于 2020-03-10 18:06:52
NVL是Oracle PL/SQL中的一个函数。它的格式是NVL( string1, replace_with)。 它的功能是如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。 pandas和SQL数据分析实战 https://study.163.com/course/courseMain.htm?courseId=1006383008&share=2&shareId=400000000398149 来源: https://www.cnblogs.com/webRobot/p/11307040.html

oracle中的nvl(), nvl2()函数

倖福魔咒の 提交于 2020-03-10 18:03:20
nvl()函数是oracle/plpgsql中的一个函数,格式为:nvl(string1, replace_with) 功能:如果string1 位null,那么nvl()函数返回replace_with的值,否则返回sting1的值。 注意:sting1和replace_with必须是同一数据类型,除非显示的适用to_char函数。 例子: nvl(to_char(some_numeric),’some string’) --其中some_numeric指某个数据类型的值。 例如: nvl(yan,0)>0 nvl(yan,0) 的意思是如果yan是null, 则取0值。 通过查询获得某个字段的合计值,如果这个值为null,则给出一个预设的 默认值(此处为0,也可以设置为其他值)。 例如: select nvl(sum(t.dwx),1) from tb t ; 就表示如果sum(t.dwx) = null就返回1。 还有另一种有关的有用的方法: Declare i integer Select nvl(sum(t.dwx),1) into i from tb t where zx = -1; 以上把获得的合计值存储到变量i中,如果查询的值为Null就把它的值设置为1。 其他用法举例如下: select nvl(rulescore,0) from zwjc_graderule

oracle与sql sever的财务月份归属的问题

泪湿孤枕 提交于 2020-03-10 17:04:39
一、问题描述 财务结账周期是上月26号到本月的25号,比如 2020-01-26 00:00:00 到 2020-02-25 23:59:59 现在要求2020年的大于1月26到2月01之间的数据,在报表中显示2月的财务月份,其他同事说有函数,我也没找, 写了个case when , 这样写的弊端就是执行效率有点慢 --case when的思路是 if 31>=dd>=26 then mm=mm+1 if mm=13(跨年) then mm=01 yyyy=yyyy+1 else yyyy=yyyy end if else mm=mm yyyy=yyyy end if; 输出yyyy-mm 实际数据 呈现数据 2019-12-23 2019-12 2019-12-24 2019-12 2019-12-25 2019-12 2019-12-26 2020-01 2019-12-27 2020-01 2019-12-28 2020-01 2019-12-29 2020-01 2019-12-30 2020-01 2019-12-31 2020-01 2020-01-01 2020-01 ................ 2020-01-25 2020-01 2020-01-26 2020-02 2020-01-27 2020-02 1.Oracle写法: SELECT case