Oracle函数的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle函数的使用相关的知识,希望对你有一定的参考价值。

参考技术A 接收字符返回字符或数值时可以使用dual伪表

1、把小写字符转换成大写

select supper(“smi”) form dual

2、把大写转换成小写

lower(“SMI”)

3、首字母大写

initcap(“smi”)

4、字符串的连接可以使用concat,也可以使用    建议使用

concat(“hello”“world”) 结果为helloworld

5、字符串的截取,使用substr,第一个参数为字符串,第二个参数是索引,第三个参数结束索引(开始索引使用0和1效果一样)

substr(hello,0,3) 结果为hel

6、获取字符串长度

length(“hello”)

7、字符串替换,第二个参数为被替换的字符串,第三个是替换的字符串

replace(“hello”,“l”,“x”) 结果为hexxo

1、四舍五入函数ROUND()

默认取整,可以指定保留位数

round(12.523)  结果为13

round(12.537,2) 结果为12.54

2、取整TRUNC

默认全部去掉小数,可以指定位数

trunc(12.789) 结果为12

3、取余数MOD

mod(10,3) 结果为1

oracle中提供了很多和日期相关的函数,包括日期的加减

日期 - 数字 =日期

日期 - 日期 = 数字(天)

1、如:查询员工进入公司的走数

  (sysdate - 入职日期)/7

注:当前日期查询select sysdate form dual

2、查询所有员工进入公司的月数

获取两个时间段的月数使用months_between(sysdate,入职日期)

3、获取几个月后的日期:add_months()

如:获取员工三个月后的日期

add_months(sysdate,3)

4、如求出下星期一是什么时候

指定给出下次某日期数next_date()

next_date(sysdate,“星期一”)

5、求日期的最后一天last_day()

求出本月的最后一天

last_day(sysdate)

1、to_char字符串转换函数

如:将所有员工的入职日期的年、月分开

注:在划分时需要通配符

年:yyyy  月:mm  日:dd

时:HH 分:mi  秒:ss

定义时间格式

to_char(sysdate,“yyyy-mm-dd HH24:mi:ss”)

在10以下的月数前面会默认加上前导零,去除加上fm

to_char(sysdate,“fmyyyy-mm-dd HH24:mi:ss”)

to_char还可以给数字做格式化

如将员工的工资按三位“,”分隔

to_char(工资,“99,999”) 9代表数字

如果想在钱上加上国家符号

美元使用

中文使用l

to_char(工资,“99,999”)

to_char(工资,“l99,999”)

2、to_number数值转换函数,将字符串转换成数值

to_number(“10”) +to_number(“10”)

3、to_date日期转换函数,将字符串数据转换成日期类型

to_date(“1997-05-12”,“YYYY-mm-dd”)  1997/05/12

1、空值处理 nvl

如果在查询的时候存在空值的情况可以使用

nvl(comm,0) 当comm的列值为空时,用0代替

2、decode函数

该函数类似于if ...else if ...else

语法:decode(列名/值,search1,result1,search2,result2,default)

decode(中国,中国,我是中国,美国,我是美国,其他)

如果为中国返回我是中国,为美国返回我是美国,为其他字符则返回其他。

3、case when 与decode差不多

语法 case when city=中国 then 我是中国

              when city=美国 then 我是美国

                else 其他

oracle 中函数的使用

-- oracle 中函数的使用--

-----------------------字符函数----------------------------

-- UPPER 函数,转换成大写
SELECT UPPER(TEST.TNAME)
FROM TEST;

-- LOSER 函数,转换成小写
SELECT LOWER(TEST.TNAME)
FROM TEST;

-- INITCAP 函数,将字符串中的单词的首字母转换成大写,其他字符转换成小写
SELECT INITCAP(TEST.TNAME)
FROM TEST;

-- CONCAT 函数, 将 字符串进行拼接然后显示。
SELECT CONCAT( TEST.TNAME , ‘WU‘ ) "字符串拼接"
FROM TEST
WHERE TEST.TNAME = ‘ZHANG‘;

SELECT TEST.TNAME || ‘WU‘ "字符串拼接"
FROM TEST
WHERE TEST.TNAME = ‘ZHANG‘;

-- SUBSTR 函数, 将 字符串进行截取
SELECT SUBSTR( TEST.TNAME, 1, 3 ) "字符串截取"
FROM TEST;

-- LENGTH 函数, 统计 字符串的长度
SELECT LENGTH( TEST.TNAME )
FROM TEST;

-- INSTR 函数, 统计 子字符串在字符串中第一次出现的位置
SELECT INSTR( TEST.TNAME, ‘H‘ ) "第一次出现的位置"
FROM TEST;

SELECT INSTR( TEST.TNAME, ‘ZH‘ )
FROM TEST;

-- LPAD 函数, 从最左边进行数据的拼接。
--函数规则 LPAD( "目标字符", 拼接之后的长度, 拼接的字符 )
/*如果拼接之后的长度,小于目标字符的长度,不进行拼接,只会从左截取目标字符相应长度的字符。
  如果拼接之后的长度,小于目标字符的长度,会重复的拼接,直到拼接之后的字符长度满足要求。
  如果拼接字符没有填写,默认在目标字符最左边添加空串。*/
SELECT LPAD( TEST.TNAME, 13, ‘1‘ )
FROM TEST;

-- RPAD 函数, 从最右边进行数据的拼接
SELECT RPAD( TEST.TNAME, 18, ‘123‘ )
FROM TEST;

-- TRIM 函数,
SELECT TRIM( TEST.TNAME ) "去掉首尾空格"
FROM TEST;

-- REPLACE 函数, 替换目标字符串中出现的所有的字符
-- 语法规则:REPLACE( 目标字符串,被替换的字符,替换字符 ),会替换目标字符串中出现的所有的字符。
SELECT REPLACE( TEST.TNAME, ‘g‘ ,‘G‘)
FROM TEST;

 


---------------     数值型函数        ----------------

-- ROUND函数,四舍五入,可以精确小数位数

SELECT ROUND( TEST.AGE /3 ,2 )FROM TEST;

-- TRUNC函数,直接截取到相应的小数位数,不进行四舍五入运算
SELECT TRUNC( TEST.AGE / 3 , 2 )
FROM TEST;

-- FLOOR函数, 向下取整
SELECT FLOOR( TEST.AGE / 3)
FROM TEST;

-- MOD函数,返回算数运算后的余数. 规则: MOD(被除数,除数)
SELECT MOD( TEST.AGE , 3 )
FROM TEST;

 

-- ----------------------- 日期类型的函数 ------------------------

-- 获取系统当前时间
SELECT SYSDATE
FROM TEST;

-- 获取系统时间后一天的时间
SELECT SYSDATE + 1
FROM TEST;

-- 获取系统时间前一天的时间
SELECT SYSDATE - 1
FROM TEST;

-- 获取系统时间 与 某一个时间点间隔多少天
SELECT SYSDATE - TEST.HIREDATE
FROM TEST;

-- MONTHS_BETWEEN 两个时间点间隔几个月
SELECT MONTHS_BETWEEN(SYSDATE, TEST.HIREDATE)
FROM TEST;

-- ADD_MONTHS 在一个时间点上增加几个月或者减少几个月
SELECT ADD_MONTHS( SYSDATE, -1 )
FROM TEST;

SELECT ADD_MONTHS( SYSDATE, 1 )
FROM TEST;

-- LAST_DAY 指定日期的所在月的最后的一天的日期
SELECT LAST_DAY(SYSDATE)
FROM TEST;


-- EXTRACT 获取到指定日期的年,月,日。这些具体信息
/*
   语法:EXTRACT( YEAR FROM 目标日期 )    目标日期的年份
         EXTRACT( MONTH FROM 目标日期 )   目标日期的月份
         EXTRACT( DAR FROM 目标日期 )    目标日期的所在天
*/

SELECT EMP.ENAME,
       EXTRACT(YEAR FROM EMP.HIREDATE) "年",
       EXTRACT(MONTH FROM EMP.HIREDATE) "月",
       EXTRACT(DAY FROM EMP.HIREDATE) "日"
FROM EMP;

 












































































































以上是关于Oracle函数的使用的主要内容,如果未能解决你的问题,请参考以下文章

oracle数据库中函数怎么使用

oracle 中grouping 函数 的使用?

如何使用Oracle的COALESCE函数

oracle列转行函数

oracle 对字段进行 MD5 加密处理函数

Oracle随机函数