首页 > 代码库 > 数据库 数据库SQL语句二

数据库 数据库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()--日期截断

 

数据库 数据库SQL语句二