zhanggaofeng

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

 

分类:

技术点:

相关文章: