1.
- Oracle中upper函数介绍
- Upper()
- 功能将字符串中的小写字母转换为大写字母。
- 语法Upper( string )
- 参数string:要将其中的小写字母转换为大写字母的字符串返回值String。
- 函数执行成功时返回将小写字母转换为大写字母后的字符串,发生错误时返回空字符串("")。
- 如果string参数的值为 NULL,Upper()函数返回NULL。
- 例如:
- SQL> select upper('this is a test') from dual;
- UPPER('THISISA
- ----------------------------
- THIS IS A TEST
2.
- dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。我们可以用它来做很多事情,如下:
- http://soft.chinabyte.com/database/201/11444701.shtml
3.
- Oracle存储过程入门
- http://blog.stnn.cc/sky_drop/Efp_Bl_1002777062.aspx 【这篇博文看起来会像看书一样】
4.
- 写一个 存储过程
- 存储过程使用Oracle's PL/SQL 程序语言编写,让我们写一个什么工作都不做的存储过程,我们可以编译和运行它而不用担心会对数据库产生任何损害。
- 在Notepad, 写下:
- CREATE OR REPLACE PROCEDURE skeleton
- IS
- BEGIN
- NULL;
- END;
- 把文件存为skeleton.sql.
- 让我们一 行行遍历这个存储过程:
- 1 CREATE OR REPLACE PROCEDURE skeleton
- 2 IS
- 3 BEGIN
- 4 NULL;
- 5 END;
- 行1:
- CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做 skeleton存储过程, 如果存在就覆盖它;
- 行2:
- IS关键词表明后面将跟随一个PL/SQL体。
- 行3:
- BEGIN关键词表明PL/SQL 体的开始。
- 行4:
- NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句;
- 行5:
- END关键词表明 PL/SQL体的结束
5.
- ORACLE replace和translate函数详解
- replace:字符串级别的代替
- 如:SELECT REPLACE('acdd','cd','ef') FROM dual; →aefd【整体】
- translate:字符级别的代替
- 如:SELECT TRANSLATE('acdd','cd','ef') FROM dual; →aeff【相应】
-
实战:
如何判断一个字符串是否是数字?
解:先转换:由于to_string不能为空,我们巧用#号代替
select translate('abc123','#1234567890.','#') from dual;→abc
from_string中的#被to_string中的#代替,但char中又没有#字符,所以通过这一步躲开了to_string必须不为空的规则。然后后面的数字以及小数点都转换为空,于是原来的字符串中只留下abc三个字符。
转换好后,用nvl2判断即可:
select nvl2(translate('abc123','#1234567890.','#'),'字符串','数字') from dual;→字符串
nvl2的作用就是,NVL2 (expr1, expr2, expr3) ->expr1不为NULL,返回expr2;为NULL,返回expr3。这样我们就可以判断一个字符串是否是数字了!解毕!
6.
- /**ORACLE 自定义类型*/
- 用 create type 变量 as table of 类型和 create type 变量 as object(
- 字段1 类型1,
- 字段2 类型2
- );
- 与 type 变量 is table of 类型 和 type 变量 is record(
- 字段1 类型1,
- 字段2 类型2
- );
- 区别是 用 create 后面用 as , 若直接用 type 后面用 is
- create 是创 object , 而 type 是创 record .
- http://xxciof.blog.163.com/blog/static/79781327200961721245149/
7.
- /***Oracle中index by binary_integer的作用*/
- /*
- 如语句:type numbers is table of number index by binary_integer;其作用是,加了”index by binary_integer ”后,numbers类型的下标就是自增长,numbers类型在插入元素时,不需要初始化,不需要每次extend增加一个空间。
- 而如果没有这句话“index by binary_integer”,那就得要显示对初始化,且每插入一个元素到numbers类型的table中时,都需要先extend.
- */
- http://oracle.chinaitlab.com/exploiture/836063.html
8.
- //Oracle exist
- 最大的作用就是加快查询数据量大的表的速度
- SELECT department_id
- FROM departments d
- WHERE EXISTS
- (SELECT * FROM employees e
- WHERE d.department_id
- = e.department_id);
- 适用于department表小,employees表很大的情况
- 如果反过来,就会严重影响查询速度
- SELECT department_id
- FROM departments d,employees e
- WHERE d.department_id
- = e.department_id;
- 另外:
- http://www.cnblogs.com/yf520gn/archive/2009/01/12/1374359.html
9_20110511
- //Oracle rownum
- 但如果就是想要用 rownum > 10 这种条件的话话就要用嵌套语句,把 rownum 先生成,然后对他进行查询。
- select *
- from (selet rownum as rn,t1.* from a where ...)
- where rn >10
- 一般代码中对结果集进行分页就是这么干的。
- look here:
- http://bbs.linuxpk.com/thread-10595-1-1.html
10
- //oracle nvl( arg,value) 方法
- 等同于 (arg ==null)?value:arg;