数据库 数据库SQL语句二

单行函数
--操作数据对象
--接受参数返回一个结果
--只对一行进行变换
--每行返回一个结果
--可以转换数据类型
--可以嵌套
--参数可以是一列或一个值
字符函数
SQL> select lower('HELLO') 大写转小写,upper('hello2') 小写转大写,initcap('hellothis world') 首字母大写 from dual;
大写  小写转 首字母大写
----- ------ ----------------
hello HELLO2 Hello This World
concat连接函数
--SQL> select 'hello' || 'world' 连接函数1,concat('fly','with') 连接函数2 from dual;
连接函数1  连接函
---------- -------
helloworld flywith
substr(a,b)--从a中,第b位开始取
substr(a,b,c)--从a中,第b位开始提取c个字符
SQL> select substr('abcdefgh',3) result1,substr('12345678',2,5) result2 from dual;
RESULT RESUL
------ -----
cdefgh 23456
length获取字符数
lengthb获取字节数
一个中文是2个字节
SQL> select length('abcde'),length('世界'),length('abcde'),lengthb('世界') from dual;
LENGTH('ABCDE') LENGTH('世界') LENGTH('ABCDE') LENGTHB('世界')
--------------- -------------- --------------- ---------------
              5              2               5               4
lpad()左填充函数
rpad()右填充函数
SQL> select lpad('abcd',10,'*'),rpad('abcd',10,'#') from dual;
LPAD('ABCD RPAD('ABCD
---------- ----------
******abcd abcd######
instr('母串','子串');在母串中查找子串,返回子串在母串中的位置,找不到返回0。
SQL> select instr('abcdef','de') from dual;
INSTR('ABCDEF','DE')
--------------------
                   4
trim去掉前后指定的字符,字符可以是空格,也可以不是空格
SQL> select trim('h' from 'hehlloh') from dual;
--注意去除的是最前后或者最后面的指定字符,中间的不会去除
--注意指定字符区分大小写
TRIM(
-----
ehllo
replace替换
SQL> select replace('helloword','w','#') from dual;
REPLACE('
---------
hello#ord
--注意是全局替换,并非只替换一个
数字函数
round:四舍五入
SQL> select round(45.926,2) AA,round(45.926,1) BB,round(45.926,0) CC,round(45.926,-1) DD,round(45.926,-2) EE from dual;
        AA         BB         CC         DD         EE
---------- ---------- ---------- ---------- ----------
     45.93       45.9         46         50          0
-- 1保留到小数点后1位
-- 0保留到个位
-- -1保留到十位
-- -2保留到百位
trunc:截断小数点后面的n位
SQL> select trunc(45.926,1) from dual;
TRUNC(45.926,1)
---------------
           45.9
mod求余
SQL> select mod(4,3) from dual;
  MOD(4,3)
----------
         1
日期函数
oracle中日期类型数据实际含有两个值:日期和时间。
默认的日期格式是 DD-MON-RR
SQL> select sysdate-1 昨天,sysdate 今天,sysdate+1 明天 from dual;
昨天           今天           明天
-------------- -------------- --------------
05-1月 -17     06-1月 -17     07-1月 -17
to_char('日期/数字',format)把数字或者日期转换成指定格式的字符串
select 
    to_char(sysdate-1,'yyyy-mm-dd hh24:mi:ss') 昨天,
    to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') 今天,
    to_char(sysdate+1,'yyyy-mm-dd hh24:mi:ss') 明天
from dual
昨天                今天                明天
------------------- ------------------- -------------------
2017-01-05 22:52:02 2017-01-06 22:52:02 2017-01-07 22:52:02
日期的数学运算
--在日期上加上或减去一个数字结果仍然为日期
--两个日期相减返回日期之间相差的天数
--可以用数字除24来向日期中加上或减去小时
--查询员工入职时间,按照天、周、月、年方式显示
select ename,sysdate-hiredate 天,(sysdate-hiredate)/7 周,
(sysdate-hiredate)/30 月,(sysdate-hiredate)/365from emp
months_between()--两个日期相差的月数
--精确计算员工的入职月数
SQL> select months_between(sysdate,hiredate) 入职月数 from emp;
add_months()--向指定日期中加上若干月数
SQL> select to_char(add_months(sysdate,2),'yyyy-mon-dd') 当前月数加上两个月 from emp;
next_day()--指定日期的下一个日期(天)
--查询当前日期的下一个周一
SQL> select to_char(next_day(sysdate,'星期一'),'yyyy-mon-dd') 当前日期的下一个星期一 from dual;
结果
2017-1月 -09
last_day()--本月的最后一天
SQL> select to_char(last_day(sysdate),'yyyy-mon-dd') 当前月数加上两个月 from emp;
round()--日期的四舍五入(按月四舍五入,过月半,则显示下个月)
trunc()--日期截断

 

posted on 2017-01-06 23:32  寒魔影  阅读(315)  评论(0编辑  收藏  举报

导航