oracle sql单行函数 常用函数实例

数据库   发布日期:2025年05月03日   浏览次数:348

无结果函数

 --一、单列函数
     --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单行函数 常用函数实例的资料请关注九品源码其它相关文章!