2----单行函数

来源:互联网 发布:java 1.7 32位 linux 编辑:程序博客网 时间:2024/06/05 19:25
1.连接字符串||
||

比如:

select '编号是'||empno||'的雇员,姓名是:'|| ename||'工作是:'||job from emp 
结果如下:

1编号是7369的雇员,姓名是:SMITH工作是:CLERK2编号是7499的雇员,姓名是:ALLEN工作是:SALESMAN3编号是7521的雇员,姓名是:WARD工作是:SALESMAN4编号是7566的雇员,姓名是:JONES工作是:MANAGER5编号是7654的雇员,姓名是:MARTIN工作是:SALESMAN6编号是7698的雇员,姓名是:BLAKE工作是:MANAGER7编号是7782的雇员,姓名是:CLARK工作是:MANAGER8编号是7788的雇员,姓名是:SCOTT工作是:ANALYST9编号是7839的雇员,姓名是:KING工作是:PRESIDENT10编号是7844的雇员,姓名是:TURNER工作是:SALESMAN11编号是7876的雇员,姓名是:ADAMS工作是:CLERK12编号是7900的雇员,姓名是:JAMES工作是:CLERK

2.not的使用

NOT 取反 
比如:

select * from emp where not(sal>1500 and comm is not null);

3.between and的使用

字段 between A and B;其中查询结果包括A和B。
支持数字、日期等字段查询条件。

4.通配符 like

%:匹配任意长度的内容; _:匹配一个长度的内容。

5.不等于

两种:<> 和 !=

6.order by

order by 字段名 asc/desc; 默认为升序。
比如:

select * from emp order by sal desc,hiredate asc;

7.字符操作函数

upper(字段名称); --------大写

lower(字段名称);-----------小写


initcap(字段名称); ----------首字母大写

concat(name1,name2);-----字符串连接
比如:

select concat('hello',' world') from dual;
substr(str1,beginIndex,endIndex);beginIndex从0/1开始效果是一样的,程序中是从0开始的。

beginIndex可以为负数,意思为从后面开始截取。


replace(str1,sourceStr,replaceStr);--替换str1中的sourceStr为replaceStr

length(字段名称);-------长度

8.数值函数

(1)四舍五入round

select round(123.651) from dual;    -----------124

保留小数

select round(123.651,2) from dual;----------------123.65
对整数进行

select round(123.651,-2) from dual; -------------100

(2)截断小数位trunc

 不保留小数,不四舍五入

select trunc(123.651) from dual;    -----------123
保留指定小数位

select trunc(123.651,2) from dual;  -------123.65

(3)取模mod

select mod(7,3) from dual;  ----------------1


9.日期函数

日期 - 数字 = 日期日期 + 数字 = 日期日期 - 日期 = 数字(天数)

获取当前日期:

select sysdate from dual;
获取星期数:

select empno,ename,round((sysdate-hiredate)/7) from emp;

MONTHS_BETWEEN();-------求出给定日期范围的月数  select months_between(sysdate,hiredate)from emp;
ADD_MONTHS();-------在指定的日期上加上月数,计算出日期       select add_months(sysdate,1) from dual;
NEXT_DAY();-----下一次给定日期数   select next_day(sysdate,'星期一') from dual;  下一个星期一的日期
LAST_DAY();---给定日期的最后一天                  select last_day(sysdate) from dual; 本月的最后一天的日期

10.转换函数

(1)TO_CHAR();-----转换成字符串

比如:年月日拆分

select empno,       ename,       to_char(hiredate, 'yyyy') year,       to_char(hiredate, 'mm') month,       to_char(hiredate, 'dd')  from emp;


比如:日期格式转换

select empno, ename, to_char(hiredate, 'yyyymmdd') from emp;

这时会出现前导0现象,即不足10,会补0

消除前导0:添加fm

select empno, ename, to_char(hiredate, 'fmyyyymmdd') from emp;

操作数字:加,

select empno,ename,to_char(sal,'99,999') from emp;
加符号:

select empno,ename,to_char(sal,'L99,999') from emp; ------加上了 ¥
select empno,ename,to_char(sal,'$99,999') from emp;------加上了$

(2)TO_NUMBER() 数字转换

select to_number('123') + to_number('234') from dual;    -----357


(3)TO_DATE() 日期转换

select to_date('2013-10-26','yyyy-mm-dd') from dual ; ------字符串转换为日期类型

11.通用函数

(1)nvl
nvl (expr1, expr2)->expr1为NULL,返回expr2;不为NULL,返回expr1。

select empno,ename,(sal+nvl(comm,0))*12 from emp; 若comm为空,则当0计算

(2)decode

select decode(col/expression,search1,result1[,search2,result2,...][,default])

col/expression:为列名或者表达式

search1、search2....searchi:为用于比较的条件

result1、result2...resulti:为返回值

即:col/expression和searchi 相比较,若相同,则返回resulti;若无匹配结果,则返回默认default。

select decode(1,1,'内容是1',2,'内容是2',3,'内容是3')from dual;  -------------内容是1
select decode(5,1,'内容是1',2,'内容是2',3,'内容是3','无匹配值')from dual; ---------无匹配值
再比如:

select empno 雇员编号, ename 雇员名称,       decode(job,              'CLERK',              '业务员',              'SALESMAN',              '销售员',              'PRESIDENT',              '执行官',              'MANAGER',              '经经理',              'ANALYST',              '分析员') 职位  from emp;














原创粉丝点击