Oralce 函数表达式 的应用


这几天 预习了一遍 Oracle , 此处把 Oralce 数据库 中 视图 的笔记 拿出来 分享 一下, 该文中 有的地方 或许存在 点错误, 希望 看到的朋友 帮我指正出来,谢谢。

Oracle 中提供了 大量的 内置函数, 已处理各种形式的运算。 这些函数涵盖了 字符串运算、数值运算、日期运算等方面, 同样 Oracle允许使用数值运算、逻辑运算等基表达式运算, 另外,提供了SQL标准所规定的特殊判式。 
 
Oracle 中的 字符串函数; 
Oracle 中的 数学函数; 
Oracle 中的 日期函数; 
Oracel 中的 聚合函数; 
Oracle 中的 运算表达式; 
Oracle 中的 特殊判式; 
Oracle 中的 高级函数—分析函数与窗口函数; 

  1. -- lpad() 函数 : 用于 左补全 字符串。 在某些情况下, 预期的字符串为固定长度, 而且格式统一, 此时可以考虑使用 lpad() 函数。 例如, 深圳股票代码都是 以 0 开头, 并且都为 6为, 可以利用 lpad格式化股票代码, 以保证 股票代码的格式。   
  2.   
  3. select lpad('21',6,'0') stock_code from dual;  
  4.   
  5. --需要注意的是, 当原字符串的长度大于 预期长度时, 实际进行的是 截取字符串操作。   
  6.   
  7. select lpad('1234567889',6,'0') stock_code from dual;  
  8.   
  9.   
  10. -- rpad() 函数 : 与 lpad() 函数 相反, rpad() 函数从右端补齐字符串。   
  11. select rpad('abc',10,'*'from dual;  
  12.   
  13. --需要注意的是:     
  14. -- lpad() 和 rpad() 都用于填充字符串, lpad() 从左端进行填充, 而 rpad() 从右端进行填充,   
  15. -- 但是 二者在最终截取字符串时, 都是 从 左端开始截取 的。   
  16.   
  17. select rpad('abcdefg'5,'*'from dual; --这句代码执行后 ,截取出来的饿时 ‘abcde’   
  18.   
  19.   
  20.   
  21.   
  22.   
  23.   
  24. -- lower() 函数: 返回小写字符串 。  lower() 函数用于返回字符串的小写形式。 lower() 函数在查询语句中经常 扮演重要角色。 例如, 对于用户名和密码的小眼来说, 用户名一般不区分大小写, 用户无论输入了大写还是小写的形式, 都被认为是合法用户。 因此, 在数据库查询时, 应该将数据库中用户名与用户输入的用户名进行统一。   
  25.   
  26. --select user_id,user_name from t_users where lower(user_name)=lower('Alex');   
  27.   
  28. SQL> select empno,ename from emp where lower(ename)=lower('joNes');  
  29.   
  30.      EMPNO ENAME  
  31. ---------- ----------   
  32.       7566 JONES  
  33.   
  34.   
  35. --不使用 lower() 函数的形式 会出现如下结果:   
  36. SQL> select empno,ename from emp where ename='joNes';  
  37. 未选定行  
  38. SQL>  
  39.   
  40.   
  41.   
  42.   
  43. -- upper() 函数: 返回大写字符串。   upper() 函数返回字符串的大写形式。 与 lower() 函数类似, upper() 函数也可以用在查询语句中, 以统一数据和 查询条件的一致性。   
  44.   
  45. --select user_id, user_name from t_users where upper(user_name)=upper('ALEX');   
  46.   
  47. SQL> select empno,ename from emp where upper(ename)=upper('jones');  
  48.   
  49.      EMPNO ENAME  
  50. ---------- ----------   
  51.       7566 JONES  
  52.   
  53. SQL>  
  54.   
  55. --不使用 upper() 函数的形式 会出现如下结果:   
  56. SQL> select empno,ename from emp where ename='jones';  
  57. 未选定行  
  58. SQL>  
  59.   
  60.   
  61. --z注意与说明: upper() 函数 和 lower() 函数 只针对 英文字符其作用, 因为只有 英文字符才有大小写之分。   
  62.   
  63.   
  64.   
  65.   
  66. -- initcap() 函数 :  单词 首字母大写。    select initcap('big') from dual;      
  67. SQL> select initcap('big'from dual;  
  68.   
  69. INI  
  70. ---   
  71. Big  
  72.   
  73.   
  74. -- 需要注意的是, initcap() 函数 不能自动识别单词。   select initcap('bigbigtiger') from dual;   
  75. SQL> select initcap('bigbigtiger'from dual;  
  76.   
  77. INITCAP(BI  
  78. -----------   
  79. Bigbigtiger  
  80.   
  81.   
  82.   
  83. -- initcap() 函数会将参数中的 非单词字符 作为 单词分隔符    
  84.   
  85. SQL> select initcap('big_big_tiger'from dual;  
  86.   
  87.    -----------   
  88.    Big_Big_Tiger  
  89.   
  90. SQL> select initcap('big/big/tiger'from dual;  
  91.    -----------   
  92.    Big/Big/Tiger  
  93.   
  94. SQL> select initcap('big big tiger'from dual;  
  95.    -----------   
  96.    Big Big Tiger  
  97.      
  98.      
  99.    
  100. -- length() 函数 :  返回字符串 长度 。  select length('abcd    ) from dual;   
  101.   
  102. -- 空字符串的长度不是 0 , 而是 null .  因为空字符串被 视作 null  , 所以, length(null) 返回的仍然是 null.   
  103. -- select length('') from dual;   
  104. SQL> select length(''from dual;  
  105.   
  106.   LENGTH('')  
  107.   ----------   
  108.   
  109. SQL>  
  110.   
  111.   
  112. -- 对其他数据类型, 照样可以通过 length() 函数 来获得其 长度。  length() 函数 会首先将 参数转换为字符串, 然后计算其长度。   
  113. -- select length(12.51) from dual;   
  114. SQL> select length(12.51) from dual;  
  115.   
  116.   LENGTH(12.51)  
  117.   -------------   
  118.             5  
  119.   
  120. SQL>  
  121.   
  122.   
  123.   
  124.   
  125. -- substr() 函数:  截取字符串 。  substr() 函数用户截取字符串。 该函数可以指定 截取的起始位置,  截取长度, 可以实现灵活的截取操作, 因此, 称为字符串操作中最为常用的 函数之一。   
  126.   
  127. --例如: 对于 字符串“1234567890”, 现在欲截取 自 第5位开始的  4个字符。  select substr('1234567890',5,4) from dual;   
  128. SQL> select substr('1234567890',5,4) from dual;  
  129. SUBS  
  130. ----   
  131. 5678  
  132.   
  133. SQL>  
  134.   
  135. -- 需要注意的是  Oracle 中的 字符位置 是从 1 开始, 而不是向某些编程语言 (如Java)那样从 0 开始。   
  136. -- 如果 不指定长度, 那么 substr() 函数 将获取 起始位置参数 字符串结尾处 的所有字符。   
  137. -- select substr('1234567890',5) from dual;   
  138. SQL> select substr('1234567890',5) from dual;  
  139.   
  140.  SUBSTR  
  141.  ------   
  142.  567890  
  143.   
  144. SQL>  
  145.   
  146.   
  147.   
  148.   
  149. -- instr() 函数 : 获得 字符串出现位置  。  instr() 函数用于获得字符串在父字符串中出现的位置   
  150. --例如: select instr('big big tiger','big') from dual;   
  151. SQL> select instr('big big tiger','big'from dual;  
  152.   
  153. INSTR('BIGBIGTIGER','BIG')  
  154. --------------------------   
  155.                          1  
  156.                            
  157.                            
  158. -- 可以指定额外的参数, 以命令该函数从 指定位置开始搜索。   
  159. SQL> select instr('big big tiger','big',2) from dual;  
  160.   
  161. INSTR('BIGBIGTIGER','BIG',2)  
  162. ----------------------------   
  163.                            5  
  164.   
  165. SQL>  
  166.   
  167. -- 还可以指定出现次数参数, 以指定是 第几次搜索到的子字符串。   
  168. --例如: select instr('big big tiger','big',2,2) from dual;   
  169. SQL> select instr('big big tiger','big',2,2) from dual;  
  170.   
  171.  INSTR('BIGBIGTIGER','BIG',2,2)  
  172.  ------------------------------   
  173.                              0  
  174.                                
  175.                                
  176.   
  177. -- ltrim() 函数 : 删除字符串 首部空格。  ltrim() 中 l 代表 left 。 该函数用于删除字符串左端的空白符。   
  178. -- select ltrim(' abc) from dual;   
  179. SQL> select ltrim('  abc'from dual;  
  180. LTR  
  181. ---   
  182. abc  
  183.   
  184. SQL>  
  185.   
  186. -- 需要注意的是, 空白符 不仅仅包括了 空格符, 还包括 TAB键、 回车符 和 换行符。   
  187.   
  188.   
  189. -- rtrim() 函数: 删除字符串 尾部空格 。  rtrim() 中  的  r 代表 right 。 该函数用于删除字符串右端空白符 。 删除字符串 首尾空白符可以结合 使用 ltrim() 和 rtrim() 函数。   
  190. -- select rtrim(ltrim( '  abc  ')) from dual;   
  191. SQL> select rtrim(ltrim('  abc  ')) from dual;  
  192.   
  193. RTR  
  194. ---   
  195. abc  
  196.   
  197. SQL>  
  198.   
  199.   
  200.   
  201. -- trim() 函数 :  删除字符串首尾空格 。   trim() 函数可以用于删除首尾空格, 相当于 ltirm() 和 rtrim() 的组合。   
  202. -- select trim('  abc  ') from dual;                               
  203. SQL> select trim('  abc 'from dual;  
  204.   
  205. TRI  
  206. ---   
  207. abc  
  208.   
  209. SQL>                              
  210.   
  211.   
  212.   
  213.   
  214. -- to_char() 函数 :  将其他类型转换为字符类型,这些类型主要包括数值型、 日期型。   
  215. 1. 将数值型转为 字符串  
  216.   
  217. --select to_char(120,'99999') result from dual;   
  218. SQL> select to_char(120,'99999') result from dual;  
  219.   
  220. RESULT  
  221. ------   
  222.    120  
  223.   
  224. SQL>  
  225.   
  226.   
  227. --select to_char(0.96,'9.99') result from dual;   
  228. SQL> select to_char(0.96,'9.99') result from dual;  
  229.   
  230. RESUL  
  231. -----   
  232.   .96  
  233.   
  234. SQL>  
  235.   
  236.   
  237. --select to_char(0.96,'0.00') result from dual;   
  238. SQL> select to_char(0.96,'0.00') result from dual;  
  239.   
  240. RESUL  
  241. -----   
  242.  0.96  
  243.    
  244.   
  245. --select to_char(5897.098,'999,999,999.000') result from dual;   
  246. SQL> select to_char(5987.098,'999,999,999.000') result from dual;  
  247.   
  248. RESULT  
  249. ----------------   
  250.        5,987.098  
  251.   
  252. SQL>  
  253.   
  254.   
  255.   
  256. --select to_char(5987.098,'$999,999,999.000') result from dual;   
  257. SQL> select to_char(587.098,'$999,999,999.000') result from dual;  
  258.   
  259. RESULT  
  260. -----------------   
  261.          $587.098  
  262.   
  263. SQL>  
  264.   
  265.   
  266.   
  267.   
  268. 2. 将日期型转换为 字符串  
  269.   
  270. --select to_char(sysdate,'yyyy-mm-dd') result from dual;   
  271. SQL> select to_char(sysdate,'yyyy-mm-dd') reuslt from dual;  
  272.   
  273. REUSLT  
  274. ----------   
  275. 2012-03-05  
  276.   
  277. SQL>  
  278.   
  279.   
  280. --select to_char(sysdate,'YYYY-MON-DD') from dual;   
  281. SQL> select to_char(sysdate,'YYYY-MON-DD'from dual;  
  282.   
  283. TO_CHAR(SYSDATE,  
  284. ----------------   
  285. 2012-3月 -05  
  286.   
  287. SQL>  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 下一页

相关内容