SQL单行函数

所谓的单行函数指的就是完成某一具体功能的操作函数,例如:转大写或日期格式的转换等等。

格式:”返回值 函数名称(参数)“。

按类型分为:字符串函数、数值函数、日期函数、转换函数、通用函数。

字符串函数:

1. 字符串 UPPER(列 | 字符串)     将传入的字符串变为大写字母形式;

2. 字符串 LOWER(列 | 字符串)     将传入的字符串变为小写字母形式;

3. 字符串 INITCAP(列 | 字符串)     开头首字母大写,其他字母全变为小写;

4. 数字 LENGTH(列 | 字符串)     取得指定字符串的长度;

5. 字符串 SUBSTR(列 | 字符串,开始索引,[长度])    进行字符串的截取,如未设定长度,则从开始索引一直截取到结尾;

6. 字符串 REPLACE(列 | 字符串,旧内容,新内容)    将指定字符串的数据由旧数据替换为新数据。

示意:

select upper('hello') from dual;    //HELLO
select lower(ename) from emp;    
select * from emp where ename=upper('&inputname');
select ename,initcap(ename) from emp;
select * from emp where length(ename)=5;
select substr('helloworld',6) from dual;    //world
select substr('helloworld',0,5) from dual;    //hello
select ename,substr(ename,length(ename)-2) from emp;    //后三位
select ename,substr(ename,-3) from emp;    //后三位(只有Oracle数据库才有)
数值函数:

1. 数字 ROUND(列 | 数字 [,小数位])    实现数据的四舍五入;

2. 数字 TRUNC(列 | 数字 [,小数位])    实现数据的截取,即不进位;

3. 数字 MOD(列 | 数字 ,列 | 数字 )    求模(计算余数);

示意:

select round(157.5616) from dual;    //158
select round(157.5616,2) from dual;    //157.56
select round(157.5616,-2) from dual;    //200
select trunc(157.5616) from dual;    //157
select trunc(157.5616,1) from dual;    //157.5
select mod(10,3) from dual;    //1
日期函数:

进行日期操作,必须知道当前日期是什么;伪列:SYSDATE;

有三个操作公式:

·日期+数字=日期(若干天之后的日期);

·日期-数字=日期(若干天之前的日期);

·日期-日期=数字(天数);

示例:

select sysdate-7,sysdate+120 from dual;

有四个日期处理函数:

1. 日期 ADD_MONTHS(列 | 日期,月数)    在指定的日期上增加若干个之后的日期;

2. 数字 MONTHS_BETWEEN(列 | 日期,列 | 日期)     返回两个日期之间的所经历的月数;

3. 日期 LAST_DAY(列 | 日期)    取得指定日期所在月数的最后一天;

4. 日期 NEXT_DAY(列 | 日期,'星期X')     返回下一个指定的一周时间数对应的日期。

示例:   

select add_months(sysdate,5) from dual;
select empno,ename,hiredate,months_between(sysdate,hiredate) from emp;
select * from emp where last_day(hiredate)-2 from emp;
select * from emp where hiredate=last_day(hiredate)-2;
select next_day(sysdate,'星期二') from dual;
select empno,ename,hiredate,trunc(months_between(sysdate,hiredate)/12) year from emp;    //年
select empno,ename,hiredate,trunc(months_between(sysdate,hiredate)/12) year,trunc(mod(months_between(sysdate,hiredate),12)) months  from emp;     //年、月
add_months(hiredate,months_between(sysdate-hiredate))    //去除年、月对日期的影响,雇佣日期+雇佣日期至今为止经历的月数:
select empno,ename,hiredate,trunc(months_between(sysdate,hiredate)/12) year,trunc(mod(months_between(sysdate,hiredate),12)) months,trunc(sysdate-add_months(hiredate,months_between(sysdate,hiredate))) day  from emp; 
转换函数

1. 字符串 TO_CHAR(列 | 日期 | 数字,转换格式)    将日期或数字格式化未指定结构的字符串;

2. 日期 TO_DATE(列 | 字符串,转换格式)    按照指定的转换格式编写字符串后变为日期型数据;

3. 数字 TO_NUMBER(列 | 字符串)    将字符串变为数字;

标记:

    ·日期:年(yyyy)、月(mm)、日(dd);

    ·时间:时(hh、hh24)、分(mi)、秒(ss);

    ·数字:任意数字(9)、本地货币符号(L)。

示例:

select to_char(sysdate,'yyyy-mm-dd') from dual;

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

select to_char(sysdate,'yyyy'),to_char(sysdate,'mm'),to_char(sysdate,'dd') from dual;

select * from emp where to_char(hiredate,'mm')=2;

select to_char(931287407209,'L999,999,999,999,999,999,999') from dual;

select to_date('1989-10-19','yyyy-mm-dd') from dual;

select to_number('1') + to_number('2') from dual;
通用函数

1. 数字 NVL(列 | NULL,默认值)    如果传入的内容是NULL,则使用默认数值处理,如果不是NULL则使用原始数值处理;

2. 数据类型 DECODE(列 | 字符串 | 数值,比较内容1,显示内容1,比较内容2,显示内容2,...[,默认显示内容])    设置的内容会与每一个比较内容进行比较,如果内容相同,则会使用显示内容进行输出,如果都不相同,则使用最后的默认信息输出。

示例:

select empno,ename,sal,comm,(sal+comm)*12 from emp;    //没有佣金的雇员的年薪结果为空
select empno,ename,sal,comm,(sal+nvl(comm,0))*12 from emp;  
select ename,job from emp;
select ename,job,decode(job,'CLERK','办事员','SALESMAN','销售员','MANAGER','经理','---') from emp;





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章