无结果函数
--一、单列函数
--1.字符串函数
--将字符串大写,因为emp表里面有15条数据,所以
select upper('hello world') from emp;
select lower(ename) from emp where ename='SCOTT';
--dual表中只用一行一列,可以用来测试函数
--inintcap是让单词的首字母大写,后面的都是小写
select initcap('hello world') from dual;
select initcap('HELLO WORLD') from dual;
select concat('hello', ' world') from dual;
--concat函数的嵌套
select concat(concat('ylw',' love'),' shagou') from dual;
--substr(char,[m,[n]]) 字符串的开始坐标为1,从m开始截取n长度,
--当m=0 不会显示数组越界,还是从1开始,如果m<0则是从字符串尾部开始截取
select substr('',,) from dual;
select substr('',-,) from dual;
select length('') from dual;
--instr(char1,char2,[n[,m]]);在char1中搜索char2,从char1中的n开始,重复m次,返回符合条件的首字符位置
select instr('','',,) from dual;
--补位函数lpad(char1,n,char2) rpad() 在char1的左边或者右边用char2补齐,直到长度为n
select ename, lpad(sal,, '$$') sal from emp where deptno='';
--截取字串 trim(c2 from c1) ltrim(c1,c2) rtrim(c1,c2) 把全部的c2从c1的两头截取出去,c2只能是一个字符,
select trim('a' from 'aaabbbaaa') from dual;
select ltrim('aaabbbaaa','a') from dual;
select rtrim('aaabbbaaa','a') from dual;
--replace(char,search_string[,replace_String]) 把search_string 替换为replace_string
select replace('ylw love shagou','shagou','zhunaodai') from dual;
--ascii(char) chr(n) ascii码中的字符和数字转换
select ascii('A') from dual;
--把ASCII列的长度设置为5
column ASCII format a5
select chr() ASCII from dual ;
--2.数字函数
--round(n[,m]) m>0四舍五入到小数点后m位,m<0四舍五入到小数点前m位
select round(45.555,) from dual;
--ceil(n) floor(n) 取整,ceil: n-(int)n>0?n+1:(int)n
select ceil(1.1) from dual;
--abs(n) mod(n,m)==>取余 power(n,m) sqrt(n);
--3.日期函数
--sysdate 当前系统时间
select sysdate from dual;
--日期转换
select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') today from dual;
--修改日期
select add_months(SYSDATE,) from dual;
--查找下一个周几日期
--中文环境下使用'星期三' 每个星期是从星期日开始 对应数字1, 所以星期三对应的是4
select next_day(SYSDATE,'星期三') next_wednesday from dual;
select next_day(SYSDATE,) next_wednesday from dual;
--当月的最后一天
select last_day(SYSDATE) from dual;
--两个日期之间差了多少月
select ename, job, months_between(sysdate, hiredate) hiredate from emp where deptno ='';
--extract(date from datetime) 从datetime中提取数据
select extract(year from sysdate) current_year from dual;
--4.转换函数
select to_char(sysdate,'YYYY"年"MM"月"DD"日"') current_time from dual ;
--数字到字符串,9可以替代任何单一数字,S表示正负号,0表示用0补齐,B加空格
select to_char(12345.789,'S99,999.999') from dual;
select to_char(123456.789,'S999,999.9990') from dual;
select to_date('2017-05-14','YYYY-MM-DD') current_time from dual;
--也可以设置数字格式 to_number(char[,fmt]);
select to_number('') from dual;
--5.null函数
--coalesce(expr1[,expr2[,expr3......]]) 返回第一个非null表达式的值
select coalesce(null,null,null,sysdate) from dual;
select ename, sal, comm, sal+nvl(comm,) total from emp;
--6.比较函数
select greatest('doctor','rose', 'martha') from dual;
select least('doctor','rose', 'martha') from dual;
--7.环境标识
--sys_context(context,attribute) 获取环境变量
select sys_context('userenv','session_user') context from dual;
--user 是关键字
select user from dual;
--8.其它函数
--decode(expr, search1,result1[,search2,result2.....][,default]) 类似于which语法
select ename, job, sal, decode(job,'MANAGER',sal*1.2,
'ANALYST',sal*1.3,
'SALESMAN',sal*1.1,
sal
) bonus from emp;
--vsize(expr) 存储的实际字节数
select vsize('中国') from dual;
--dump(expr,return_fmt) return_fmt是几进制输出
select dump('ABC',) from dual;
select dump('傻狗',) from dual;
上述所有函数的结果集和函数
SQL> @ d:\tempfile\oracle\input.txt;
SQL> --一、单列函数
SQL> --1.字符串函数
SQL> --将字符串大写,因为emp表里面有15条数据,所以
SQL> select upper('hello world') from emp;
UPPER('HELL
-----------
HELLO WORLD
HELLO WORLD
HELLO WORLD
HELLO WORLD
HELLO WORLD
HELLO WORLD
HELLO WORLD
HELLO WORLD
HELLO WORLD
HELLO WORLD
HELLO WORLD
HELLO WORLD
HELLO WORLD
HELLO WORLD
HELLO WORLD
已选择15行。
已用时间: 00: 00: 00.00
SQL> select lower(ename) from emp where ename='SCOTT';
LOWER(ENAM
----------
scott
已用时间: 00: 00: 00.00
SQL> --dual表中只用一行一列,可以用来测试函数
SQL> --inintcap是让单词的首字母大写,后面的都是小写
SQL> select initcap('hello world') from dual;
INITCAP('HE
-----------
Hello World
已用时间: : : 00.00
SQL> select initcap('HELLO WORLD') from dual;
INITCAP('HE
-----------
Hello World
已用时间: 00: 00: 00.00
SQL>
SQL> select concat('hello', ' world') from dual;
CONCAT('HEL
-----------
hello world
已用时间: : : 00.00
SQL> --concat函数的嵌套
SQL> select concat(concat('ylw',' love'),' shagou') from dual;
CONCAT(CONCAT('
---------------
ylw love shagou
已用时间: 00: 00: 00.00
SQL>
SQL> --substr(char,[m,[n]]) 字符串的开始坐标为1,从m开始截取n长度,
SQL> --当m=0 不会显示数组越界,还是从1开始,如果m<0则是从字符串尾部开始截取
SQL> select substr('',3,3) from dual;
SUB
---
已用时间: 00: 00: 00.00
SQL> select substr('',-3,3) from dual;
SUB
---
已用时间: 00: 00: 00.00
SQL>
SQL> select length('') from dual;
LENGTH('')
---------------
已用时间: 00: 00: 00.00
SQL>
SQL> --instr(char1,char2,[n[,m]]);在char1中搜索char2,从char1中的n开始,重复m次,返回符合条件的首字符位置
SQL> select instr('','',3,1) from dual;
INSTR('','',3,1)
--------------------------
已用时间: 00: 00: 00.00
SQL>
SQL> --补位函数lpad(char1,n,char2) rpad() 在char1的左边或者右边用char2补齐,直到长度为n
SQL> select ename, lpad(sal,10, '$$') sal from emp where deptno='';
ENAME SAL
---------- --------------------
CLARK $$$$$$2450
KING $$$$$$5000
MILLER $$$$$$1300
已用时间: 00: 00: 00.00
SQL>
SQL> --截取字串 trim(c2 from c1) ltrim(c1,c2) rtrim(c1,c2) 把全部的c2从c1的两头截取出去,c2只能是一个字符,
SQL> select trim('a' from 'aaabbbaaa') from dual;
TRI
---
bbb
已用时间: 00: 00: 00.00
SQL> select ltrim('aaabbbaaa','a') from dual;
LTRIM(
------
bbbaaa
已用时间: 00: 00: 00.00
SQL> select rtrim('aaabbbaaa','a') from dual;
RTRIM(
------
aaabbb
已用时间: 00: 00: 00.00
SQL>
SQL> --replace(char,search_string[,replace_String]) 把search_string 替换为replace_string
SQL> select replace('ylw love shagou','shagou','zhunaodai') from dual;
REPLACE('YLWLOVESH
------------------
ylw love zhunaodai
已用时间: : : 00.00
SQL>
SQL> --ascii(char) chr(n) ascii码中的字符和数字转换
SQL> select ascii('A') from dual;
ASCII('A')
----------
已用时间: : : 00.00
SQL> --把ASCII列的长度设置为5
SQL> column ASCII format a5
SQL> select chr() ASCII from dual ;
ASCII
-----
A
已用时间: : : 00.00
SQL> --2.数字函数
SQL> --round(n[,m]) m>0四舍五入到小数点后m位,m<0四舍五入到小数点前m位
SQL> select round(45.555,) from dual;
ROUND(45.555,)
---------------
45.56
已用时间: : : 00.00
SQL>
SQL> --ceil(n) floor(n) 取整,ceil: n-(int)n>0?n+1:(int)n
SQL> select ceil(1.1) from dual;
CEIL(1.1)
----------
已用时间: : : 00.00
SQL> --abs(n) mod(n,m)==>取余 power(n,m) sqrt(n);
SQL> --3.日期函数
SQL> --sysdate 当前系统时间
SQL> select sysdate from dual;
SYSDATE
--------------
-5月 -
已用时间: : : 00.00
SQL> --日期转换
SQL> select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') today from dual;
TODAY
-------------------
-- ::
已用时间: : : 00.00
SQL> --修改日期
SQL> select add_months(SYSDATE,) from dual;
ADD_MONTHS(SYS
--------------
-3月 -
已用时间: : : 00.00
SQL> --查找下一个周几日期
SQL> --中文环境下使用'星期三' 每个星期是从星期日开始 对应数字1, 所以星期三对应的是4
SQL> select next_day(SYSDATE,'星期三') next_wednesday from dual;
NEXT_WEDNESDAY
--------------
-5月 -
已用时间: : : 00.00
SQL> select next_day(SYSDATE,) next_wednesday from dual;
NEXT_WEDNESDAY
--------------
-5月 -
已用时间: : : 00.00
SQL> --当月的最后一天
SQL> select last_day(SYSDATE) from dual;
LAST_DAY(SYSDA
--------------
-5月 -
已用时间: : : 00.00
SQL> --两个日期之间差了多少月
SQL> select ename, job, months_between(sysdate, hiredate) hiredate from emp where deptno ='';
ENAME JOB HIREDATE
---------- --------- ----------
CLARK MANAGER 431.188792
KING PRESIDENT 425.930728
MILLER CLERK 423.737179
已用时间: : : 00.00
SQL>
SQL> --extract(date from datetime) 从datetime中提取数据
SQL> select extract(year from sysdate) current_year from dual;
CURRENT_YEAR
------------
已用时间: : : 00.00
SQL>
SQL> --4.转换函数
SQL> select to_char(sysdate,'YYYY"年"MM"月"DD"日"') current_time from dual ;
CURRENT_TIME
--------------
2017年05月14日
已用时间: : : 00.00
SQL> --数字到字符串,9可以替代任何单一数字,S表示正负号,0表示用0补齐,B加空格
SQL> select to_char(12345.789,'S99,999.999') from dual;
TO_CHAR(
-----------
+,345.789
已用时间: : : 00.00
SQL> select to_char(123456.789,'S999,999.9990') from dual;
TO_CHAR(
-------------
+,456.7890
已用时间: : : 00.00
SQL>
SQL> select to_date('2017-05-14','YYYY-MM-DD') current_time from dual;
CURRENT_TIME
--------------
-5月 -
已用时间: : : 00.00
SQL> --也可以设置数字格式 to_number(char[,fmt]);
SQL> select to_number('') from dual;
TO_NUMBER('')
-----------------
已用时间: : : 00.00
SQL> --5.null函数
SQL> --coalesce(expr1[,expr2[,expr3......]]) 返回第一个非null表达式的值
SQL> select coalesce(null,null,null,sysdate) from dual;
COALESCE(NULL,
--------------
-5月 -
已用时间: : : 00.00
SQL> select ename, sal, comm, sal+nvl(comm,) total from emp;
ENAME SAL COMM TOTAL
---------- ---------- ---------- ----------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
JOHN_SMITH
已选择15行。
已用时间: : : 00.00
SQL>
SQL> --6.比较函数
SQL> select greatest('doctor','rose', 'martha') from dual;
GREA
----
rose
已用时间: : : 00.00
SQL> select least('doctor','rose', 'martha') from dual;
LEAST(
------
doctor
已用时间: : : 00.00
SQL> --7.环境标识
SQL> --sys_context(context,attribute) 获取环境变量
SQL> select sys_context('userenv','session_user') context from dual;
CONTEXT
----------------------------------------------------------------------------------------------------
SCOTT
已用时间: : : 00.00
SQL> --user 是关键字
SQL> select user from dual;
USER
------------------------------
SCOTT
已用时间: : : 00.00
SQL> --8.其它函数
SQL> --decode(expr, search1,result1[,search2,result2.....][,default]) 类似于which语法
SQL> select ename, job, sal, decode(job,'MANAGER',sal*1.2,
'ANALYST',sal*1.3,
'SALESMAN',sal*1.1,
sal
) bonus from emp;
ENAME JOB SAL BONUS
---------- --------- ---------- ----------
SMITH CLERK
ALLEN SALESMAN
WARD SALESMAN
JONES MANAGER
MARTIN SALESMAN
BLAKE MANAGER
CLARK MANAGER
SCOTT ANALYST
KING PRESIDENT
TURNER SALESMAN
ADAMS CLERK
JAMES CLERK
FORD ANALYST
MILLER CLERK
JOHN_SMITH
已选择15行。
已用时间: : : 00.00
SQL>
SQL> --vsize(expr) 存储的实际字节数
SQL> select vsize('中国') from dual;
VSIZE('中国')
-------------
已用时间: : : 00.00
SQL>
SQL> --dump(expr,return_fmt) return_fmt是几进制输出
SQL> select dump('ABC',) from dual;
DUMP('ABC',)
----------------------
Typ= Len=: ,,
已用时间: : : 00.00
SQL> select dump('傻狗',) from dual;
DUMP('傻狗',)
-------------------------
Typ= Len=: c9,b5,b9,b7
已用时间: : : 00.00
SQL>
SQL>
SQL>
SQL>
SQL> SQL> spool off;
以上就是oracle sql单行函数 常用函数实例的详细内容,更多关于oracle sql单行函数 常用函数实例的资料请关注九品源码其它相关文章!