1.
- Oracle中upper函数介绍
- Upper()
- 功能将字符串中的小写字母转换为大写字母。
- 语法Upper(string)
- 参数string:要将其中的小写字母转换为大写字母的字符串返回值String。
- 函数执行成功时返回将小写字母转换为大写字母后的字符串,发生错误时返回空字符串("")。
- 如果string参数的值为NULL,Upper()函数返回NULL。
- 例如:
- SQL>selectupper('thisisatest')fromdual;
- UPPER('THISISA
- ----------------------------
- THISISATEST
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'sPL/SQL程序语言编写,让我们写一个什么工作都不做的存储过程,我们可以编译和运行它而不用担心会对数据库产生任何损害。
- 在Notepad,写下:
- CREATEORREPLACEPROCEDUREskeleton
- IS
- BEGIN
- NULL;
- END;
- 把文件存为skeleton.sql.
- 让我们一行行遍历这个存储过程:
- 1CREATEORREPLACEPROCEDUREskeleton
- 2IS
- 3BEGIN
- 4NULL;
- 5END;
- 行1:
- CREATEORREPLACEPROCEDURE是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程,如果存在就覆盖它;
- 行2:
- IS关键词表明后面将跟随一个PL/SQL体。
- 行3:
- BEGIN关键词表明PL/SQL体的开始。
- 行4:
- NULLPL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句;
- 行5:
- END关键词表明PL/SQL体的结束
5.
- ORACLEreplace和translate函数详解
- replace:字符串级别的代替
- 如:SELECTREPLACE('acdd','cd','ef')FROMdual;→aefd【整体】
- translate:字符级别的代替
- 如:SELECTTRANSLATE('acdd','cd','ef')FROMdual;→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。这样我们就可以判断一个字符串是否是数字了!解毕!
http://oracle.chinaitlab.com/exploiture/808365.html
6.
- /**ORACLE自定义类型*/
- 用createtype变量astableof类型和createtype变量asobject(
- 字段1类型1,
- 字段2类型2
- );
- 与type变量istableof类型和type变量isrecord(
- 字段1类型1,
- 字段2类型2
- );
- 区别是用create后面用as,若直接用type后面用is
- create是创object,而type是创record.
- http://xxciof.blog.163.com/blog/static/79781327200961721245149/
7.
- /***Oracle中indexbybinary_integer的作用*/
- /*
- 如语句:typenumbersistableofnumberindexbybinary_integer;其作用是,加了”indexbybinary_integer”后,numbers类型的下标就是自增长,numbers类型在插入元素时,不需要初始化,不需要每次extend增加一个空间。
- 而如果没有这句话“indexbybinary_integer”,那就得要显示对初始化,且每插入一个元素到numbers类型的table中时,都需要先extend.
- */
- http://oracle.chinaitlab.com/exploiture/836063.html
8.
- //Oracleexist
- 最大的作用就是加快查询数据量大的表的速度
- SELECTdepartment_id
- FROMdepartmentsd
- WHEREEXISTS
- (SELECT*FROMemployeese
- WHEREd.department_id
- =e.department_id);
- 适用于department表小,employees表很大的情况
- 如果反过来,就会严重影响查询速度
- SELECTdepartment_id
- FROMdepartmentsd,employeese
- WHEREd.department_id
- =e.department_id;
- 另外:
- http://www.cnblogs.com/yf520gn/archive/2009/01/12/1374359.html
9_20110511
- //Oraclerownum
- 但如果就是想要用rownum>10这种条件的话话就要用嵌套语句,把rownum先生成,然后对他进行查询。
- select*
- from(seletrownumasrn,t1.*fromawhere...)
- wherern>10
- 一般代码中对结果集进行分页就是这么干的。
- lookhere:
- http://bbs.linuxpk.com/thread-10595-1-1.html
10
- //oraclenvl(arg,value)方法
- 等同于(arg==null)?value:arg;