oracle函数

SQL中Charindex和Oracle中对应的函数Instr

不想你离开。 提交于 2020-03-22 22:39:05
转:http://blog.csdn.net/zhuyu19911016520/article/details/8568640 sql :charindex('字符串',字段)>0     charindex('administrator',MUserID)>0 oracle:instr(字段,'字符串',1,1) >0    instr(MUserID,'administrator',1,1)>0 在项目中用到了Oracle中 Instr 这个函数,顺便仔细的再次学习了一下这个知识。 Oracle中,可以使用 Instr 函数对某个字符串进行判断,判断其是否含有指定的字符。 其语法为: Instr(string, substring, position, occurrence) 其中 string:代表源字符串; substring:代表想聪源字符串中查找的子串; position:代表查找的开始位置,该参数可选的,默认为 1; occurrence:代表想从源字符中查找出第几次出现的substring,该参数也是可选的,默认为1; 如果 position 的值为负数,那么代表从右往左进行查找。 返回值为:查找到的字符串的位置。 对于 Instr 函数,我们经常这样使用:从一个字符串中查找指定子串的位置。 例如: SELECT Instr('Hello Word', 'o',

Oracle中 Instr 这个函数

左心房为你撑大大i 提交于 2020-03-22 22:38:48
http://www.jb51.net/article/42369.htm sql :charindex('字符串',字段)>0 charindex('administrator',MUserID)>0 oracle:instr(字段,'字符串',1,1) >0 instr(MUserID,'administrator',1,1)>0 在项目中用到了Oracle中 Instr 这个函数,顺便仔细的再次学习了一下这个知识。 Oracle中,可以使用 Instr 函数对某个字符串进行判断,判断其是否含有指定的字符。 其语法为: Instr(string, substring, position, occurrence) 其中 string:代表源字符串; substring:代表想聪源字符串中查找的子串; position:代表查找的开始位置,该参数可选的,默认为 1; occurrence:代表想从源字符中查找出第几次出现的substring,该参数也是可选的,默认为1; 如果 position 的值为负数,那么代表从右往左进行查找。 返回值为:查找到的字符串的位置。 对于 Instr 函数,我们经常这样使用:从一个字符串中查找指定子串的位置。 例如: SELECT Instr('Hello Word', 'o', -1, 1) "String" FROM Dual 的显示结果是

Oracle中Instr用法

天大地大妈咪最大 提交于 2020-03-22 22:38:07
之前只是会用Orcale来做些项目,没有研究里面具体函数之类的,现在边学边看边记录。 主要这个Instr看着默生其它的一看都能够明白的; 它的做用是取得指定字符是否存在,及取出Index位置,无则为0;如果存在,则根据配置的position,及occurrence来体现检询的规则来取出Index位置信息。 在项目中用到了Oracle中 Instr 这个函数,顺便仔细的再次学习了一下这个知识。 Oracle中,可以使用 Instr 函数对某个字符串进行判断,判断其是否含有指定的字符。 其语法为: Instr(string, substring, position, occurrence) 其中 string:代表源字符串; substring:代表想聪源字符串中查找的子串; position:代表查找的开始位置,该参数可选的,默认为 1; occurrence:代表想从源字符中查找出第几次出现的substring,该参数也是可选的,默认为1; 如果 position 的值为负数,那么代表从右往左进行查找。 返回值为:查找到的字符串的位置。 对于 Instr 函数,我们经常这样使用:从一个字符串中查找指定子串的位置。 例如: SELECT Instr('Hello Word', 'o', -1, 1) "String" FROM Dual 的显示结果是 Instring ———— 8

Oracle 序列

我与影子孤独终老i 提交于 2020-03-22 18:27:53
--主键生成策略:序列:自动生成顺序递增的序列号 --建一个表,建一个序列,就是为了给这个表生成主键的 create sequence empp_seq increment by 3 start with 10 minvalue 1 maxvalue 20 --序列两个方法 --创建一个序列后必须先调用一次nextval,相当于对这个序列进行初始化操作 --1.nextval():调用一次,增加一次并返回增加的值 select * from user_sequences --2.currval():调用后不增加,并返回当前序列的值 select empp_seq.nextval from dual; select empp_seq.currval from dual; insert into empp(deptno,ename,deptno) values (empp_seq.nextval,'李四',10); commit; --sys_guid()是Oracle提供的一个函数,他返回的值全世界唯一 select sys_guid() from dual; 来源: https://www.cnblogs.com/qilin20/p/12502872.html

oracle授权grant

≡放荡痞女 提交于 2020-03-21 12:30:31
GRANT privilege [, ...] ON object [ ( column [, ...] ) ] [, ...] TO { PUBLIC | username [, ...] } [ WITH GRANT OPTION ] 这些字段与 Postgres 实现是兼容的,除了下面一些例外: privilege SQL92 允许声明附加的权限: SELECT   REFERENCES 允许在一个声明的表的整合约束中使用某些或全部列/字段. USAGE 允许使用一个域,字符集,集合或事务.如果声明的对象不是表/视图, privilege 只能声明为 USAGE. object [ TABLE ] table SQL92 允许一个附加的非函数关键字 TABLE. CHARACTER SET 允许使用声明的字符集. COLLATION 允许使用声明的集合序列. TRANSLATION 允许使用声明的字符集转换. DOMAIN 允许使用声明的域. WITH GRANT OPTION 允许向别人赋予同样权限. 来源: https://www.cnblogs.com/houxm/archive/2009/08/26/1554000.html

mysql、sql server、oracle数据库分页查询及分析(操作手册)

南笙酒味 提交于 2020-03-20 06:51:49
1、mysql分页查询 方式1: select * from table order by id limit m, n;   该语句的意思为,查询m+n条记录,去掉前m条,返回后n条记录。无疑该查询能够实现分页功能,但是如果 m的值越大,查询的性能会越低 (越后面的页数,查询性能越低),因为MySQL同样需要扫描过m+n条记录。 方式2: select * from table where id > #max_id# order by id limit n;   该查询每次会返回n条记录,却无需像方式1扫描过m条记录,在大数据量的分页情况下,性能可以明显好于方式1,但该分页查询必须要每次查询时拿到上一次查 询(上一页)的一个最大id(或最小id)。该查询的问题就在于,我们有时没有办法拿到上一次查询(上一页)的最大id(或最小id),比如当前在第3 页,需要查询第5页的数据,该查询方法便爱莫能助了。 方式3:   为了避免能够实现方式2不能实现的查询,就同样需要使用到limit m, n子句,为了性能,就需要将m的值尽力的小,比如当前在第3页,需要查询第5页,每页10条数据,当前第3页的最大id为#max_id#: select * from table where id > #max_id# order by id limit 20, 10;  

oracle, group by, having, where

偶尔善良 提交于 2020-03-19 08:52:57
选择列表中如果包含有列、表达式时,这个列、表达式必须包含在Group By子句中。另外,如果采用了表达式的话,则数据库管理员即使在选择列表中采用了别名,但是在Group By子句中仍然必须采用表达式的完整表达方式,而不能够采用别名。 同时含有Group By(分组语句)、Having(分组语句下的条件函数)、Order By(排序语句)三个共存的话,则需要注意他们有一定的书写顺序。通常情况下Order By排序语句必须放置在最后。 另外需要注意的是,采用Group语句会自动对纪录进行排序。 如果数据库管理员对于这个排序结果不满意的话,就需要通过Order By子句再来对显示结果进行排序。不过这里需要注意的是,本身分组等子句就需要对纪录进行排序并进行一定的业务逻辑处理,此时会耗费比较多的数据库资源。 如果想把某个字段当作第一顺序排序的话,则只需要把这个字段放置在分组语句中的第一个参数即可。 在使用 group by 时,有一个规则需要遵守,即出现在select列表中的字段,如果没有在组函数中,那么必须出现在 group by 子句中。(select中的字段不可以单独出现,必须出现在 group 语句中或者在组函数中。) Group By子句与Where子句是不兼容的。 查询语句的select 和 group by ,having 子句是聚组函数唯一出现的地方,在where

Oracle基础函数

假装没事ソ 提交于 2020-03-19 05:55:09
[sql] view plain copy --1,大小写控制函数 SELECT LOWER( 'Hello World') 转小写, UPPER( 'Hello World') 转大写, INITCAP( 'hello world') 首字母大写 FROM DUAL; --2,字符控制函数 SELECT CONCAT( 'Hello', 'World') 字符连接 FROM DUAL; --3,求字母串中的某个子串 SELECT SUBSTR( 'Hello World',3) FROM DUAL; --截取从第3个字符到末尾 SELECT SUBSTR( 'Hello World',3,4) FROM DUAL; --截取从第3个字符连续4个字符 --4,字符数和字节数 SELECT LENGTH( 'China') 字符数, LENGTHB( 'China') 字节数 FROM DUAL; --5,在母串中,查找子串的位置 SELECT INSTR( 'Hello World', 'll') FROM DUAL; --6,左右填充,将abcd用*填充到10位 SELECT LPAD( 'abcd',10, '*') 左填充, RPAD( 'abcd',10, '*') 右填充 FROM DUAL; --7,去掉字符串前后指定的字符 SELECT TRIM( 'H' FROM

Oracle连接查询

孤街醉人 提交于 2020-03-19 05:51:37
1、 NVL(comm,0) NVL 函数将 NULL 变为指定的内容。 2、 DECODE(col/expression,search1,result1,search2,result2,[…]) select decode(1,1,' 内容是 1',2,' 内容是 2',3,' 内容是 3') from dual; 3、 自然连接不显示含有NULL的值 SELECT E.ENAME, E.SAL, D.DNAME, E.DEPTNO FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO ORDER BY ENAME; 等同于 SELECT * FROM dept NATURAL JOIN emp; SELECT * FROM emp join dept using (deptno); 4、左连接( + )在右面,以左边的表为准,显示左边含有NULL的数据 SELECT E.ENAME, E.SAL, D.DNAME, E.DEPTNO FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO(+) ORDER BY ENAME; 等同于 SELECT E.ENAME, E.SAL, D.DNAME, E.DEPTNO FROM EMP E LEFT OUTER JOIN DEPT D ON E.DEPTNO =

Oracle中统计符合某列条件的列总数

可紊 提交于 2020-03-17 16:25:38
最近在项目报表中需要一个查询语句,用来统计符合某一列条件的其它几列的个数 比如有下面一个表结构: 需要在列D后面增加一列,统计在列A不为空,并且列B、C、D不为空的个数 经过自己试验,查找帮助,总算实现了上面的查询。 首先讲几个函数的用法: NULL :指的是空值,或者非法值。 NVL (expr1, expr2) 参数说明:如果expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致 NVL2 (expr1, expr2, expr3) 参数说明:如果expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型 NULLIF (expr1, expr2) 参数说明:如果相等返回NULL,不等返回expr1 下面是本人通过两种方法实现的结果 方法一: 代码 1 Select a, 2 b, 3 c, 4 d, 5 Case 6 When a Is Not Null Then 7 Nvl2(b, 1 , 0 ) + Nvl2(c, 1 , 0 ) + Nvl2(d, 1 , 0 ) 8 Else 9 0 10 End E 11 From AA 方法二: 代码 1 Select a, 2 b, 3 c, 4 d, 5 Case 6 When a Is Not Null Then