函数
函数只有一个输出
lower:转为小写
SQL> select lower ('sql:Structural Query Language') from dual;
LOWER('SQL:STRUCTURALQUERYLAN
-----------------------------
sql:structural query language
这里的dual是系统里的一个虚表
upper:转换为大写
initcap:变成首字母大写
concat:连接两个字符串
select concat(‘----’,‘二二二’) from dual;
substr:返回指定的子串
select substr('sql is structural query language',m,n)from dual;
返回第m个字符开始长度为n的串,可省略n。
length:返回字符串的长度
instr:返回所给字符的位置SELEVT
select instr('sql is structural query language','i') from dual;
----------------------------
5
trim:去掉头尾的字符。
SQL> select trim('?' from '?sql is xxx?') from dual;
TRIM('?'FR
----------
sql is xxx
默认去掉头部+尾部的字符。
如果要分别去掉头或尾,用leading 或 trailing
SQL> select trim(leading'?' from '?sql is xxx?') from dual;
TRIM('?'FR
----------
sql is xxx?
------------------------------------------------------------------------
使用字符函数的实例:
select empno as "Code" , upper(ename)NAME, initcap(job)"Job" from emp where lower(job)='salesman'
单引号和双引号的区别:
双引号括起来的更确切一点叫 "引证标识符"
比如我们创建一张表,我们在写CREATE语句的时候,就算表名用小写,数据字典里存储的所有标识符还是大写的
但是要想在数据字典里存储小写的标识符,那写CREATE语句的时候就得用双引号
所以要标识符区分大小写,或在标识符中包含空格,或者使用保留字做标识符,就得用双引号括起来的引证标识符
双引号:
① 表示其内部的字符串严格区分大小写
② 用于特殊字符或关键字
③ 不受标识符规则限制
④ 会被当成一个列来处理
⑤ 当出现在to_char的格式字符串中时,双引号有特殊的作用,就是将非法的格式符包装起来
单引号:
① 表示字符串常量
② 字符串中的双引号仅仅被当作一个普通字符进行处理。此时,双引号不需要成对出现
③ 动态SQL:
在一对单引号包含的语句中,必须有一对相邻的单引号表示一个单引号
两个相邻的单引号的作用,第一个是用来表示转义字符,后面一个表示真正的单引号
单引号里要用单引号应该是两个连续的单引号,而不是双引号
例如:
select 'alter system kill session ''''|| sid||','||serial#|| '''';' from v$session
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
数字型函数
round(列名|表达式,n):四舍五入到小数点后n位
trunc(列名|表达式,n):把数值截取到小数点后n位
mod(m,n):m除以n并取余数
SQL> select round(1.253,2),trunc(23.264652,3),mod(9,5) from dual;
ROUND(1.253,2) TRUNC(23.264652,3) MOD(9,5)
-------------- ------------------ ----------
1.25 23.264 4
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
日期处理:
默认格式: DD-MON-RR
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
--------------
10-5月 -15
日期相加减,结果还是日期类型。
SQL> select sysdate -1 from dual;
SYSDATE-1
--------------
09-5月 -15
默认加减的为天数 , 除以24 可变成小时数。xx/24
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
日期函数
months_between(日期1,日期2):返回日期间隔的月数,日期1大于日期2,为正数,反之为负数。
select months_between('01-3月-15','01-5月-15') from dual
MONTHS_BETWEEN('01-3月-15','01-5月-15')
---------------------------------------
-2
add_months(日期,n月):把n月加到日期上
next_day(日期,字符串):返回下一个由字符串(星期几)指定的日期。
表示的是:15年5月10号开始,下一个星期日的日期。
SQL> select next_day('10-5月-15','星期日')from dual;
NEXT_DAY('10-5
--------------
17-5月 -15
last_day(日期):返回该日期所在的月份的最后一天
-----------------------------------------------------------------------------
综合的例子:
select
ename,hiredate,last_day(hiredate),
next_day(hiredate,'星期日'),
months_between(sysdate,hiredate)"Months",
add_months(hiredate,3)"Revview"
from emp
ENAME HIREDATE LAST_DAY(HIRED NEXT_DAY(HIRED Months Revview
---------- -------------- -------------- -------------- ---------- --------------
SMITH 17-12月-80 31-12月-80 21-12月-80 412.789808 17-3月 -81
ALLEN 20-2月 -81 28-2月 -81 22-2月 -81 410.693034 20-5月 -81
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++