ORACLE函数学习(自学)
2016-01-18 20:19
681 查看
留以后观察:
select ascii('A'),ascii('Z') from dual; --65 90 select chr('65'),chr('90') from dual; --A Z --ascii函数 --chr ascii反函数 select concat('123','456') from dual; --123456 select concat(null,'123') from dual; --123 --concat函数将第二个参数连接到第一个参数后面 select initcap('abc') from dual; --Abc select initcap('123') from dual; --123 --initcap函数 首字母大写 select instr('abcb','b',-1,1) from dual; --2 --instr函数 第一个参数元字符串,第二个参数字符串中的关键字,第三个参数为正从左往右值为第一个参数查询的起始位置索引,若为负数从右往左查询,第四个参数表示该关键字在第一个参数中第几次出现,三四默认值都为1 select instrb('abcb','bc',1,1) from dual; --2 --感觉和instr并没有什么区别 select length('abc') from dual; --3 --length函数 返还一串字符的长度 select lower('ABC') from dual; --abc --lower函数 返回小写的字符 select ltrim('abc','ab') from dual; --c select ltrim('vabc','ab') from dual;--(无效) --ltrim函数 根据第二个字符查找第一个字符从最左边开始,若出现参数二关键词,则将其删除 与rtrim()函数用法相同 select replace('abc','ab','AB') from dual;--ABc --replace函数 用参数三替换参数一中存在的参数二 select substr('message',1,4) from dual; --mess --substr函数 切割字符串,二三参数,起始位与结束位,若参数三不给定则到串的尾部 select soundex('abc') ,soundex('ABC') ,soundex('dawson') from dual; --what meanings? select translate('ABC','A','D') from dual; --DBC --感觉应该和replace函数用法相同 select upper('abc') from dual; --ABC --大写转换函数 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select abs('-123') from dual; --`123--返回其绝对值 select ceil('123.123') from dual; --124 --返回大于或等于参数一的最小整数 select exp('1') from dual; --E1 --返回E的N次幂 select floor('123.123') from dual; --123 --返回小于或等于参数一的最大整数 select ln('2') from dual; --返回参数一自然对数,参数必须大于0 select log('2','2') from dual; --返回参数一为底参数二的对数 select mod('3','2') from dual; --1 --返回参数一除以参数一的余数 select round('126.123','-1') from dual; --130 select round('123.123','-1') from dual; --120 select round('123.123','1') from dual; --123.1 --第二个参数为负,则返回小数点前几位(根据参数来定)(四舍五入), 若为正,则返回小数点后几位(根据参数来定)根据之后的那位小数来四舍五入 注:参数二必须为整数 select sign('-1') from dual; --(-1) select sign('-2222') from dual; --(-1) select sign('1') from dual; -- 1 select sign('2222') from dual; -- 1 select sign('0') from dual; -- 0 如果参数为负返回-1,参数为正 返回1,参数为0 返回0 select trunc('123.1234','2') from dual; --123.12 select trunc('123.1234') from dual; --123 select trunc('123.1234','-2') from dual; --100 注:没有四舍五入 (可以截断时间的如:trunc(sysdate,'yyyy')) --> 当前的年份和这个月份的第一天 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select add_months(sysdate,'12') from dual; --2016/....... select add_months(sysdate,'-12') from dual; --2014/......返回当前时间,再加上第二个参数的时间(月份) select last_day(sysdate) from dual; --返回b期 select months_between(sysdate,sysdate) from dual; --0 返回两个日期参数之间的月份差值 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select round(sysdate,'YYYY') from dual; --2016/1/1 --返回,该日期以参数二的格式进行输出,当前月的第一天 select trunc('89.89923','2') from dual; --89.89 截取数字 select trunc(sysdate) from dual; --截取日期,去除时分秒 select trunc(sysdate,'yyyy') from dual; --目前年份月份的第一天 select trunc(sysdate,'Q') from dual; --目前年份月份的第一天 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select nvl('参数一','参数二'); --如果参数一为空则返回参数二,否则返回参数一 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (要查询分页数据的表) A WHERE ROWNUM <= 60 ) WHERE RN >= 1 --oracle分页 60--表示总共60条,1--从第一条显示,一页60条 SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (要查询分页数据的表) A WHERE ROWNUM <= 60 ) WHERE RN >= 41 --60表示总共60条数据, 41--表示从第41条开始显示,一页显示20条数据 -- SELECT /*+ FIRST_ROWS */ * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21
----------------------------------------------------------------------------------------------------------------------------------------------------------decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)该函数的含义如下:
IF 条件=值1 THEN
RETURN(翻译值1)
ELSIF 条件=值2 THEN
RETURN(翻译值2)
......
ELSIF 条件=值n THEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
END IF
decode(字段或字段的运算,值1,值2,值3) 这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3
当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多
相关文章推荐
- Oracle Merge语句少用 容易引起死锁
- Oracle第一天之sql
- Oracle第一天之Oracle介绍
- oracle中日期函数使用
- oracle笔记整理16——表空间利用率、锁表、锁包、dbms_job操作
- ORACLE分区表、分区索引
- Oracle SQLplus 上如何查看procedure的内容
- oracle 归档模式
- 通过Oracle补充日志,找到锁阻塞源头的SQL
- Oracle创建DataBase Links
- oracle标量子查询
- Oracle 获取当前日期及日期格式
- Oracle to_date()函数的用法
- 由于某种错误导致数据表数据巨大(千万级别),删除后对该数据操作速度极慢的原因及解决方法
- 导出ORACLE表、字段、注释
- ORACLE 安装Oracle12遇到的问题
- oracle pl/sql 分隔逗号
- oracle这个语句是什么意思?SET DEFINE OFF;
- Oracle 递归查询
- Oracle 11g 编译使用BBED