Oralce 函数表达式 的应用
Oralce 函数表达式 的应用
这几天 预习了一遍 Oracle , 此处把 Oralce 数据库 中 视图 的笔记 拿出来 分享 一下, 该文中 有的地方 或许存在 点错误, 希望 看到的朋友 帮我指正出来,谢谢。
Oracle 中提供了 大量的 内置函数, 已处理各种形式的运算。 这些函数涵盖了 字符串运算、数值运算、日期运算等方面, 同样 Oracle允许使用数值运算、逻辑运算等基表达式运算, 另外,提供了SQL标准所规定的特殊判式。
Oracle 中的 字符串函数;
Oracle 中的 数学函数;
Oracle 中的 日期函数;
Oracel 中的 聚合函数;
Oracle 中的 运算表达式;
Oracle 中的 特殊判式;
Oracle 中的 高级函数—分析函数与窗口函数;
- -- lpad() 函数 : 用于 左补全 字符串。 在某些情况下, 预期的字符串为固定长度, 而且格式统一, 此时可以考虑使用 lpad() 函数。 例如, 深圳股票代码都是 以 0 开头, 并且都为 6为, 可以利用 lpad格式化股票代码, 以保证 股票代码的格式。
- select lpad('21',6,'0') stock_code from dual;
- --需要注意的是, 当原字符串的长度大于 预期长度时, 实际进行的是 截取字符串操作。
- select lpad('1234567889',6,'0') stock_code from dual;
- -- rpad() 函数 : 与 lpad() 函数 相反, rpad() 函数从右端补齐字符串。
- select rpad('abc',10,'*') from dual;
- --需要注意的是:
- -- lpad() 和 rpad() 都用于填充字符串, lpad() 从左端进行填充, 而 rpad() 从右端进行填充,
- -- 但是 二者在最终截取字符串时, 都是 从 左端开始截取 的。
- select rpad('abcdefg'5,'*') from dual; --这句代码执行后 ,截取出来的饿时 ‘abcde’
- -- lower() 函数: 返回小写字符串 。 lower() 函数用于返回字符串的小写形式。 lower() 函数在查询语句中经常 扮演重要角色。 例如, 对于用户名和密码的小眼来说, 用户名一般不区分大小写, 用户无论输入了大写还是小写的形式, 都被认为是合法用户。 因此, 在数据库查询时, 应该将数据库中用户名与用户输入的用户名进行统一。
- --select user_id,user_name from t_users where lower(user_name)=lower('Alex');
- SQL> select empno,ename from emp where lower(ename)=lower('joNes');
- EMPNO ENAME
- ---------- ----------
- 7566 JONES
- --不使用 lower() 函数的形式 会出现如下结果:
- SQL> select empno,ename from emp where ename='joNes';
- 未选定行
- SQL>
- -- upper() 函数: 返回大写字符串。 upper() 函数返回字符串的大写形式。 与 lower() 函数类似, upper() 函数也可以用在查询语句中, 以统一数据和 查询条件的一致性。
- --select user_id, user_name from t_users where upper(user_name)=upper('ALEX');
- SQL> select empno,ename from emp where upper(ename)=upper('jones');
- EMPNO ENAME
- ---------- ----------
- 7566 JONES
- SQL>
- --不使用 upper() 函数的形式 会出现如下结果:
- SQL> select empno,ename from emp where ename='jones';
- 未选定行
- SQL>
- --z注意与说明: upper() 函数 和 lower() 函数 只针对 英文字符其作用, 因为只有 英文字符才有大小写之分。
- -- initcap() 函数 : 单词 首字母大写。 select initcap('big') from dual;
- SQL> select initcap('big') from dual;
- INI
- ---
- Big
- -- 需要注意的是, initcap() 函数 不能自动识别单词。 select initcap('bigbigtiger') from dual;
- SQL> select initcap('bigbigtiger') from dual;
- INITCAP(BI
- -----------
- Bigbigtiger
- -- initcap() 函数会将参数中的 非单词字符 作为 单词分隔符
- SQL> select initcap('big_big_tiger') from dual;
- -----------
- Big_Big_Tiger
- SQL> select initcap('big/big/tiger') from dual;
- -----------
- Big/Big/Tiger
- SQL> select initcap('big big tiger') from dual;
- -----------
- Big Big Tiger
- -- length() 函数 : 返回字符串 长度 。 select length('abcd ) from dual;
- -- 空字符串的长度不是 0 , 而是 null . 因为空字符串被 视作 null , 所以, length(null) 返回的仍然是 null.
- -- select length('') from dual;
- SQL> select length('') from dual;
- LENGTH('')
- ----------
- SQL>
- -- 对其他数据类型, 照样可以通过 length() 函数 来获得其 长度。 length() 函数 会首先将 参数转换为字符串, 然后计算其长度。
- -- select length(12.51) from dual;
- SQL> select length(12.51) from dual;
- LENGTH(12.51)
- -------------
- 5
- SQL>
- -- substr() 函数: 截取字符串 。 substr() 函数用户截取字符串。 该函数可以指定 截取的起始位置, 截取长度, 可以实现灵活的截取操作, 因此, 称为字符串操作中最为常用的 函数之一。
- --例如: 对于 字符串“1234567890”, 现在欲截取 自 第5位开始的 4个字符。 select substr('1234567890',5,4) from dual;
- SQL> select substr('1234567890',5,4) from dual;
- SUBS
- ----
- 5678
- SQL>
- -- 需要注意的是 Oracle 中的 字符位置 是从 1 开始, 而不是向某些编程语言 (如Java)那样从 0 开始。
- -- 如果 不指定长度, 那么 substr() 函数 将获取 起始位置参数 字符串结尾处 的所有字符。
- -- select substr('1234567890',5) from dual;
- SQL> select substr('1234567890',5) from dual;
- SUBSTR
- ------
- 567890
- SQL>
- -- instr() 函数 : 获得 字符串出现位置 。 instr() 函数用于获得字符串在父字符串中出现的位置
- --例如: select instr('big big tiger','big') from dual;
- SQL> select instr('big big tiger','big') from dual;
- INSTR('BIGBIGTIGER','BIG')
- --------------------------
- 1
- -- 可以指定额外的参数, 以命令该函数从 指定位置开始搜索。
- SQL> select instr('big big tiger','big',2) from dual;
- INSTR('BIGBIGTIGER','BIG',2)
- ----------------------------
- 5
- SQL>
- -- 还可以指定出现次数参数, 以指定是 第几次搜索到的子字符串。
- --例如: select instr('big big tiger','big',2,2) from dual;
- SQL> select instr('big big tiger','big',2,2) from dual;
- INSTR('BIGBIGTIGER','BIG',2,2)
- ------------------------------
- 0
- -- ltrim() 函数 : 删除字符串 首部空格。 ltrim() 中 l 代表 left 。 该函数用于删除字符串左端的空白符。
- -- select ltrim(' abc) from dual;
- SQL> select ltrim(' abc') from dual;
- LTR
- ---
- abc
- SQL>
- -- 需要注意的是, 空白符 不仅仅包括了 空格符, 还包括 TAB键、 回车符 和 换行符。
- -- rtrim() 函数: 删除字符串 尾部空格 。 rtrim() 中 的 r 代表 right 。 该函数用于删除字符串右端空白符 。 删除字符串 首尾空白符可以结合 使用 ltrim() 和 rtrim() 函数。
- -- select rtrim(ltrim( ' abc ')) from dual;
- SQL> select rtrim(ltrim(' abc ')) from dual;
- RTR
- ---
- abc
- SQL>
- -- trim() 函数 : 删除字符串首尾空格 。 trim() 函数可以用于删除首尾空格, 相当于 ltirm() 和 rtrim() 的组合。
- -- select trim(' abc ') from dual;
- SQL> select trim(' abc ') from dual;
- TRI
- ---
- abc
- SQL>
- -- to_char() 函数 : 将其他类型转换为字符类型,这些类型主要包括数值型、 日期型。
- 1. 将数值型转为 字符串
- --select to_char(120,'99999') result from dual;
- SQL> select to_char(120,'99999') result from dual;
- RESULT
- ------
- 120
- SQL>
- --select to_char(0.96,'9.99') result from dual;
- SQL> select to_char(0.96,'9.99') result from dual;
- RESUL
- -----
- .96
- SQL>
- --select to_char(0.96,'0.00') result from dual;
- SQL> select to_char(0.96,'0.00') result from dual;
- RESUL
- -----
- 0.96
- --select to_char(5897.098,'999,999,999.000') result from dual;
- SQL> select to_char(5987.098,'999,999,999.000') result from dual;
- RESULT
- ----------------
- 5,987.098
- SQL>
- --select to_char(5987.098,'$999,999,999.000') result from dual;
- SQL> select to_char(587.098,'$999,999,999.000') result from dual;
- RESULT
- -----------------
- $587.098
- SQL>
- 2. 将日期型转换为 字符串
- --select to_char(sysdate,'yyyy-mm-dd') result from dual;
- SQL> select to_char(sysdate,'yyyy-mm-dd') reuslt from dual;
- REUSLT
- ----------
- 2012-03-05
- SQL>
- --select to_char(sysdate,'YYYY-MON-DD') from dual;
- SQL> select to_char(sysdate,'YYYY-MON-DD') from dual;
- TO_CHAR(SYSDATE,
- ----------------
- 2012-3月 -05
- SQL>
|
评论暂时关闭