oracle单行函数

Oracle函数分为单行函数和多行函数

而Oracle单行函数又分为字符函数,数字函数,日期函数,转换函数,通用函数。

 dual是oracle提供的一张特殊的表,所有者为sys,它只包含一列和带有值X的一行,为了开发人员进行测试。

这些为字符函数:

--大小写控制函数  

select lower('Hello World') 转小写, upper('Hello World') 转大写 from dual;  

--initcap: 首字母大写  

select initcap('hello world') 首字符大写 from dual;    

--字符控制函数  

-- concat: 字符连接函数, 等同于  ||  

select concat('Hello',' World') from dual;  

Selecthello||world from dual;(通常这么写)

--substr:求母串中的某个子串  

select substr('Hello World',3) from dual;  

(sql中没有第0位 ,他的计数是从1开始的。)

select substr('Hello World',3,4) from dual;  

--length和lengthb: 字符数和字节数  

select length('China') 字符数, lengthb('China') 字节数  from dual;  

--instr:在母串中,查找子串的位置  

select instr('Hello World','ll') from dual;  

--lpad,rpad: 左右填充,将abcd用*填充到10位  

select lpad('abcd',10,'*') 左填充, rpad('abcd',10,'*') 右填充 from dual;       ******abcd abcd******

--trim: 去掉字符串前后指定的字符  

select trim('H' from 'Hello WorldH') from dual;  

--replace:字符串替换函数  

select replace('Hello Wordl','l','*') from dual;  

  

数字函数  :

select round(45.926,2) 四舍五入,

trunc(45.926,2)  截断 

后面的参数为(小数点后几位,2即为取两位小数,如果小数取为负数,则是小数点前几位。)

mod(1600,300) 求于 from dual;  

   (第一个参数除以第二个参数的余数)

--ROUND函数  

select round(45.923,0) 整数位, round(45.923,-1) 十位,round(45.923,-2) 百位 from dual;  

  

--日期函数  

--显示当前日期  

select sysdate from dual; (根据系统不同 ,输出的顺序可能不同)

--显示时间部分  

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;  

--显示昨天,今天和明天,加减数字仍未日期  

select sysdate-1 昨天, sysdate 今天, sysdate+1 明天 from dual;  

--两个日期相减,结果为相差的天数,查询员工信息,显示员工工龄。两个日期不能相加  

select empno,ename, sysdate-hiredate 天 from emp;  

--查询员工信息,显示员工工龄,分别按照天,星期,月显示  

select empno,ename,sysdate-hiredate 天,(sysdate-hiredate)/7 星期, (sysdate-hiredate)/30 月 from emp;  

--months_between:两个日期相差的月数  

select (sysdate-hiredate)/30 方式一, months_between(sysdate,hiredate) 方式二 from emp;  

--add_months:在指定日期上加上若干个月  

select add_months(sysdate,1)  下个月, add_months(sysdate,123) "123个月后" from dual  

--last_day: 某个日期当月的最后一天  

select last_day(sysdate) from dual;  

--next_day:下周六  

select next_day(sysdate,'星期五') from dual;  

--对日期进行四舍五入  

select round(sysdate,'MONTH')  月,round(sysdate,'YEAR') from dual;     

--对日期进行截断  

select trunc(sysdate,'MONTH')  月,trunc(sysdate,'YEAR') from dual;  

--日期格式  

select * from emp where hiredate=to_date('1982-01-23','yyyy-mm-dd');  

-- 查询当前日期:显示:  2011-09-17 15:12:15今天是星期六  

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day') from dual;  

--查询员工信息,显示员工的编号,姓名,月薪,要求有货币代码(L),千位符(,),小数点(.),  

select empno,ename,to_char(sal,'L9,999.99') from emp;  

通用函数  :

--nvl(exp1,exp2):当exp1为空时,返回exp2  

--nvl2(exp1,exp2,exp3):当exp1为空时,返回exp3;否则返回exp2  

select ename,sal*12+nvl2(comm,comm,0) 年收入 from emp; 

转换函数:

To_char  将数字转换为字符串

select to_char(sal,'$99999.99') from emp ;

9代表数字宽度

To_number 将字符串转换成数字

select to_number('157','9999')from dual;

将年份日期转化为数字

selectto_number(to_char(sysdate,'yyyy'),'9999') from dual;

to_date  将字符转换成日期

select to_date('0503,2006','MM DD,YYYY') from dual


猜你喜欢

转载自blog.csdn.net/qq_39404258/article/details/80623567