当前位置: 代码迷 >> SQL >> SQL ->>>&gt
  详细解决方案

SQL ->>>&gt

热度:98   发布时间:2016-05-05 14:47:52.0
SQL ->>>>

1.

Code:
  1. Oracle中upper函数介绍
  2. Upper()
  3. 功能将字符串中的小写字母转换为大写字母。
  4. 语法Upper(string)
  5. 参数string:要将其中的小写字母转换为大写字母的字符串返回值String。
  6. 函数执行成功时返回将小写字母转换为大写字母后的字符串,发生错误时返回空字符串("")。
  7. 如果string参数的值为NULLUpper()函数返回NULL
  8. 例如:
  9. SQL>selectupper('thisisatest')fromdual;
  10. UPPER('THISISA
  11. ----------------------------
  12. THISISATEST

2.

Code:
  1. dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。我们可以用它来做很多事情,如下:
  2. http://soft.chinabyte.com/database/201/11444701.shtml

3.

Code:
  1. Oracle存储过程入门
  2. http://blog.stnn.cc/sky_drop/Efp_Bl_1002777062.aspx【这篇博文看起来会像看书一样】

4.

Code:
  1. 写一个存储过程
  2.   存储过程使用Oracle'sPL/SQL程序语言编写,让我们写一个什么工作都不做的存储过程,我们可以编译和运行它而不用担心会对数据库产生任何损害。
  3.   在Notepad,写下:
  4.   CREATEORREPLACEPROCEDUREskeleton
  5.   IS
  6.   BEGIN
  7.   NULL;
  8.   END;
  9.   把文件存为skeleton.sql.
  10.   让我们一行行遍历这个存储过程:
  11.   1CREATEORREPLACEPROCEDUREskeleton
  12.   2IS
  13.   3BEGIN
  14.   4NULL;
  15.   5END;
  16.   行1:
  17.   CREATEORREPLACEPROCEDURE是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程,如果存在就覆盖它;
  18.   行2:
  19.   IS关键词表明后面将跟随一个PL/SQL体。
  20.   行3:
  21.   BEGIN关键词表明PL/SQL体的开始。
  22.   行4:
  23.   NULLPL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句;
  24.   行5:
  25.   END关键词表明PL/SQL体的结束

5.

Code:
  1. ORACLEreplace和translate函数详解
  2. replace:字符串级别的代替
  3.   如:SELECTREPLACE('acdd','cd','ef')FROMdual;→aefd【整体】
  4. translate:字符级别的代替
  5.   如:SELECTTRANSLATE('acdd','cd','ef')FROMdual;→aeff【相应】
  6. 实战:

      如何判断一个字符串是否是数字?

      解:先转换:由于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.

Code:
  1. /**ORACLE自定义类型*/
  2. 用createtype变量astableof类型和createtype变量asobject(
  3. 字段1类型1,
  4. 字段2类型2
  5. );
  6. 与type变量istableof类型和type变量isrecord(
  7. 字段1类型1,
  8. 字段2类型2
  9. );
  10. 区别是用create后面用as,直接用type后面用is
  11. create是创object,而type是创record.
  12. http://xxciof.blog.163.com/blog/static/79781327200961721245149/

7.

Code:
  1. /***Oracle中indexbybinary_integer的作用*/
  2. /*
  3. 如语句:typenumbersistableofnumberindexbybinary_integer;其作用是,加了”indexbybinary_integer”后,numbers类型的下标就是自增长,numbers类型在插入元素时,不需要初始化,不需要每次extend增加一个空间。
  4.   而如果没有这句话“indexbybinary_integer”,那就得要显示对初始化,且每插入一个元素到numbers类型的table中时,都需要先extend.
  5. */
  6. http://oracle.chinaitlab.com/exploiture/836063.html

8.

Code:
  1. //Oracleexist
  2. 最大的作用就是加快查询数据量大的表的速度
  3. SELECTdepartment_id
  4. FROMdepartmentsd
  5. WHEREEXISTS
  6. (SELECT*FROMemployeese
  7. WHEREd.department_id
  8. =e.department_id);
  9. 适用于department表小,employees表很大的情况
  10. 如果反过来,就会严重影响查询速度
  11. SELECTdepartment_id
  12. FROMdepartmentsd,employeese
  13. WHEREd.department_id
  14. =e.department_id;
  15. 另外:
  16. http://www.cnblogs.com/yf520gn/archive/2009/01/12/1374359.html

9_20110511

Code:
  1. //Oraclerownum
  2. 但如果就是想要用rownum>10这种条件的话话就要用嵌套语句,把rownum先生成,然后对他进行查询。
  3. select*
  4. from(seletrownumasrn,t1.*fromawhere...)
  5. wherern>10
  6. 一般代码中对结果集进行分页就是这么干的。
  7. lookhere:
  8. http://bbs.linuxpk.com/thread-10595-1-1.html

10

Code:
  1. //oraclenvl(arg,value)方法
  2. 等同于(arg==null)?value:arg;
  相关解决方案