oracle 常用函数
1.TO_CHAR()--转换成字符串类型数据
TO_CHAR(T1.FPAYDATE, 'yyyy-MM-dd')
UpdateTime--2017年6月20日10:46:05
参考地址:http://blog.csdn.net/jinlong5200/article/details/3135949
1.1 TO_CHAR(NUMBER)
用途:本函数把参数N转为一个VARCHAR2类型的数值。N可以是NUMBER,BINARY_FLOAT,或者BINARY_DOUBLE;如果不带格式,那么函数会把N转换为足以表示N的VARCHAR2字符串。
格式表参考:
格式 | 简例 | 举例 | 说明 |
, (逗号) |
'99,999' |
select to_char(1000,'9,999') from dual --1,000 |
逗号,一般以千分位出现,作为分组符号使用.如果需要您也可以当作是十分位,百分位出现,可以出现N次,视乎数字的大小而定. 变态的例子是 to_char(1234,'9,9,9,9'). 注意事项:只能出现在整数部分 |
. (点号) |
'99.99' |
select to_char(1234.34,'9,9,9,9.99') from dual --1,2,3,4.34 |
点号,不要念为"句号",句号是个圆圈,点号只能出现在小数点对应的地方,只能出现一次. 注意事项:只能出现在一个地方,就是原来数据小数点位置 |
$ (美元符号) |
'$999.99' |
select to_char(1234.34,'9,999.$99') from dual --$1,234.34 |
美元,可以放在任意地方 注意事项:只能出现一次 |
0(零) | '0999.99' |
select to_char(1234,'9,999.00') from dual -- 1,234.00 |
零.在对应位置返回对应的字符,如果没有则以'0'填充 注意事项:这是一个强制的符号,对应位没有,则以'o'填充,这是9很大不同地方 |
9 | '999.99' |
select to_char(123,'99999.99') from dual --123.00 |
9.在小数位,则表示转换为对应字符,如果没有则以0表示;在整数位,没有对应则不填充字符 注意事项:对于0和9而言,如果格式的位数<数字的位数,会返回'#'. |
B(空格符) | 'B999' |
select 'S'||TO_CHAR(1234,'99B99') from dual --S 1234 |
没有其它特别作用,在整数部分最前面加一个空格,可以出现在任意位置 注意事项:只能出现在整数部位 |
C(国际货币符号) | 'C9999' | 在特定的位置返回一个ISO货币符号(就是NLS_ISO_CURRENCY参数所代表的值) TO_CHAR(1233,'C9999')='CNY1234' ,这是新的国际标准RMB,关于这个可查询"国际货币符号" 注意事项:只能出现在整数部位第一位. 可以通过alter session set NLS_ISO_CURRENCY='JAPAN';来修改当前会话的设置. |
|
D(ISO 小数位符号) | '999D99' | 这是"点号"的国际版本(ISO),作用等同于点号,也是只能出现一次.所不同的是,数据库会根据NLS_NUMERIC_CHARACTER的参数值来设置内容.默认的这个值是点号. 注意事项:没有特别需要一般不要用这个格式符号.也不要轻易修改参数值. 也可用alter sesssion set 来修改. alter session set nls_numeric_characters='!,'; to_char(1234.34,'9999d99')=1234!34 |
|
EEEE(科学计算符) | 9.9EEEE | 科学计算符号 TO_CHAR(2008032001,'9.9EEEE')='2.01E+09',由于是科学计算方法,所以小数位前面加一个9或者0即可,多个是没有意义的. |
|
G(分组符号) | 999G999 | 是逗号(,)的的ISO标准,作为分组符号使用,可以放在多个地方使用. TO_CHAR(123456,'999G9G99')=123,4,56 注意事项:同第八项 -D, 此外如果要转换出小数点,则要和D配合使用,不能和点号配合. |
|
L(本地货币符号) | 'L999' | 是C的本地版本.可以放在整个格式的最前面和最后面. TO_CHAR(123456,'999G9G99D00L')=123,4,56.00¥ 注意事项:同第七项 C |
|
MI(负号) | '9999MI' | 如果是负数,在尾部加上负号(-),如果是正数,则尾巴加上空格 to_char(1234,'9999mi')||'S'||TO_CHAR(-5678,'9999MI') =1234 S5678- 注意事项:只能放在格式尾巴 |
|
PR(符号) | 9999PR | 是表达负数的另外一种方式.如果是正数,则头部加上空格;如果是负数,则用小简括号<>把数字包起来. TO_CHAR(-1234.89,'9G999D00PR')=<1,234.89> 注意事项:同12 |
|
S | '9999S' |
select to_char(1234,'S9999') from dual --+1234 |
是12,13的综合改进版本.为整数加一个正号+,为负数加一个符号-.S在前则加在前,在后则在后 |
X | XXXX |
select to_char(100,'XX') from dual --64 |
转换为16进制 注意事项:数值必须是大于等于0的整数。前面只能和0或者FM组合使用 |
注意:其他数字转字符串的格式,由于不常用没有罗列,详细见上面网址
小结:
数值类: 0,9,
分组类: (.),(,),D,G ,其中点好和逗号因为表示不明显,所以用小括号凸显。
货币类: $,C,L,U
计算转换类:EEEE,RN,V,X
正负符号:MI,PR,S
其它类:B
正统类:TM
1.2 TO_CHAR(CHARACTER)
用途:把NCLOB,CLOB,NCHAR转换为VARCHAR2
1.3 TO_CHAR(DATETIME)
用途:把日期转化为字符串
UpdateTime--2017年7月5日08:10:02
格式 | 举例 | 说明 |
- / , . ; : "text" |
SELECT TO_CHAR(sysdate,'yyyy"年"MM"月"dd"日"') FROM DUAL --2017年06月21日 |
时间分隔符号,除了标准的几个,还允许用文字作为分割符号 |
AD A.D. |
不会举例 | 即拉丁文Anno Domini的简写,表示公元.会根据nls的不同转换为公元或者ad等 无特殊注意事项 |
AM A.M. |
不会举例 | 上午的简写 ,同pm, p.m. (下午) , 中文环境输出为上午(如果是上午) |
BC B.C. |
不会举例 | 虽然标准的写法是B.c. (c小写) 或者BC,好在Oracle不讲究这个。表示公元前 |
CC SCC |
SELECT TO_CHAR(SYSDATE,'CC YYYY-MM-dd') FROM DUAL --21 2017-07-05 |
返回世纪,以阿拉伯数字表示 如果年的后两位介于01-99那么,返回前两位+1,否则返回前两位 |
D |
SELECT TO_CHAR(sysdate,'D') FROM dual --4 |
一周之中的某天,返回的是序号1-7(星期日-星期六) |
DAY |
SELECT TO_CHAR(sysdate,'DAY') FROM dual --WEDNESDAY |
一周之中的某天,不过返回的是星期几而已,这和语言设置有关系,在中国环境 NLS_DATE_LANGUAGE=SIMPLIFIED CHINESE ,用星期一到星期天表示 |
DD |
SELECT TO_CHAR(sysdate,'DD') FROM dual --05 |
月份中的某天(1-31) |
DDD |
SELECT TO_CHAR(sysdate,'DDD') FROM dual --186 |
年份中的某天(1-366) |
DL |
SELECT TO_CHAR(sysdate,'DL') FROM dual --Wednesday, July 05, 2017 |
返回长的日期格式。受到NLS_TERRITORY,NLS_LANGUAGE参数控制。例 2008年4月28日 星期一 限制:除了DL,其它什么的都不能设置。 |
DS |
SELECT TO_CHAR(sysdate,'DS') FROM dual --7/5/2017 |
返回短的日期格式。受到NLS_TERRITORY,NLS_LANGUAGE参数控制。 例如 2008-04-28 限制:除了DL,其它什么的都不能设置。 |
DY |
SELECT TO_CHAR(sysdate,'DY') FROM dual --WED |
日期的简称,就是星期几(当然这指的是中国环境下) |
HH |
SELECT TO_CHAR(SYSDATE,'HH') FROM DUAL --07 |
表示小时,为12小时制(1-12)表示小时,为12小时制,同hh12(1-12) |
HH12 |
SELECT TO_CHAR(SYSDATE,'HH12') FROM DUAL --07 |
表示小时,为12小时制(1-12) |
HH24 |
SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL --07 |
表示小时,为24小时制(0-23) |
MI |
SELECT TO_CHAR(SYSDATE,'MI') FROM DUAL --55 |
分(0-59) |
MM |
SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL --07 |
2位月(1-12) |
MON |
SELECT TO_CHAR(SYSDATE,'MON') FROM DUAL --JUL |
月的简称,和国家有关系NLS_DATE_LANGUAGE,例如04在中文环境下用4月表示. |
MONTH |
SELECT TO_CHAR(SYSDATE,'MONTH') FROM DUAL --JULY |
月的名称,国家有关系NLS_DATE_LANGUAGE,目前在中文下04表示为4月。 |
PM P.M. |
同am,a.m.表示下午 | |
Q |
SELECT TO_CHAR(SYSDATE,'Q') FROM DUAL --3 |
季度(1-4) |
SS |
SELECT TO_CHAR(SYSDATE,'SS') FROM DUAL --44 |
秒(0-59),一分钟内 |
SSSSS | 一天从午夜开始的累积秒数.(0-86399) | |
TS |
SELECT TO_CHAR(SYSDATE,'TS') FROM DUAL --8:03:51 AM |
返回短日期格式内容,包括时分秒等,只能和dl,ds组合使用,格式是: dl ts或者ds ts ,中间以空格间隔开。 表现形式受NLS_TERRITORY 和NLS_LANGUAGE影响。 |
Y,YYY |
SELECT TO_CHAR(SYSDATE,'Y,YYY') FROM DUAL --2017 |
四位年,用逗号分隔 |
YEAR SYEAR |
SELECT TO_CHAR(SYSDATE,'YEAR') FROM DUAL --TWENTY SEVENTEEN |
发音表达的年 S前缀表示公元前BC |
YYYY SYYYY |
SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL --2017 |
四位年,S前缀表示公元前BC |
YYY YY Y |
依次表示后面3,2,1位的年,例如2017 可以分别取值为017,17,7 |
小结:
1.下表的格式基本上也都可以用于TO_DATE, TO_TIMESTAMP, TO_TIMESTAMP_TZ, TO_YMINTERVAL,TO_DSINTERVAL函数;
2.从以上看,主要就是表示时间几个部分的格式:世纪、年,月,日,时,分,秒,毫秒,以及其它一些混合格式。每个时间部分都可以有多种的表达方式,通过这样归类就比较容易记忆;
3.很多格式可以组合使用,这样最终可以形成足够丰富的表达其形势;
4.很多格式和nls是密切相关的;
5.某些输出(返回)和格式大小写是有关系的,这在中文环境下体现不出来(目前来没有看到),但是english环境下就名下,以to_char(sysdate,'day')为例子,如果是西文环境是返回sun(假设sysdate位于周末),如果to_char(sysdate,'DAY')则返回SUN。
2.TO_NUMBER() --转换成字符串类型数据
3.TO_DATE() --转换成日期类型数据
TO_DATE(T1.FPAYDATE, 'yyyy-MM-dd')
UpdateTime--2017年7月7日11:48:22
使用注意事项:
a.使用to_char()将date类型数据转换成字符串时,可以只带一个参数
select to_char(t.schedule_date) from CONSULT_SCHEDULE t
--28-APR-17
b.使用to_date()将varchar2类型转换成日期时,必须带两个参数
--正确用法
select t.schedule_date from CONSULT_SCHEDULE t where t.schedule_date = to_date('2017/7/7','yyyy-MM-dd')
--错误用法
--报错:文字与格式字符串不匹配
select t.schedule_date from CONSULT_SCHEDULE t where t.schedule_date = '2017/7/7'
select t.schedule_date from CONSULT_SCHEDULE t where t.schedule_date = to_date('2017/7/7')
c.Date类型转varchar2
TO_CHAR(SYSDATE,'yyyy-MM-dd hh24:mm:ss')
c1.转换格式不区分大小写;
c2.小时格式化:默认12小时,24小时格式转换时需要指明;
c3.分钟格式化:可以使用mi或mm。
d.varchar2-->Date
方法一:
TO_DATE(#SCHEDULE_DATE#,'YYYY-MM-DD hh24:mi')
前两个规则一样;
d3.转分钟时,必须使用mi,不能使用mm,否则会报错;
d4.如果格式化到分,会自动添加上0秒。
UpdateTime--2017年10月31日09:41:01
方法二:
DATE#SCHEDULE_DATE#
举例:
--将字符串类型'1970-01-01'转换成日期类型
SELECT TO_DATE('1970-01-01','YYYY-MM-DD') FROM dual;
SELECT DATE'1970-01-01' FROM DUAL;
e.所以为了避免异常,转换分钟时,建议使用"mi"进行格式化;
f.Date类型可以直接进行加减运算。
示例:
<isNotEmpty prepend="and" property="ENDDATE">
<![CDATA[
APPLY_DATE <= TO_DATE(#ENDDATE#,'yyyy-MM-dd')+1
]]>
</isNotEmpty>
g.
g1.to_date是类型转换,不是格式转换,字符串和后面的格式要匹配;
g2.to_char才是转成对应格式。
--错误用法
INSERT INTO TEST2 (C1, C2,c3) VALUES ('1',1,to_date('2010-12-27 00:00:00','yyyy-mm-dd'))
--正确用法
INSERT INTO TEST2 (C1, C2,c3) VALUES (1,1,to_date('2010-12-27 00:00:00','yyyy-mm-dd hh24:mi:ss'))
--错误用法
SELECT TO_DATE(TO_CHAR('2017-06-13 08:06', 'YYYY-MM-DD'),'yyyy-MM-dd') from dual;
--错误用法
SELECT TO_CHAR('2017-06-13 08:06', 'YYYY-MM-DD') from dual;
--正确用法
SELECT TO_DATE('2017-06-13 08:06','YYYY-MM-DD HH24:mi') from dual;
SELECT TO_CHAR(TO_DATE('2017-06-13 08:06','YYYY-MM-DD HH24:mi'), 'YYYY-MM-DD') from dual;
--将date类型的yyyy-MM-dd HH24:mi格式的数据转换成yyyy-MM-dd格式的date类型
SELECT TO_DATE(TO_CHAR(TO_DATE('2017-06-13 08:06','YYYY-MM-DD HH24:mi'), 'YYYY-MM-DD'),'YYYY-MM-DD') from dual;
操作日期类型
A.查询系统当前日期
--查询出来的结果是12小时制的(注意与mysql与java中24小时和12小时的不同)
select to_char(sysdate,'yyyy-MM-dd hh12:mm:ss') from dual;
select to_char(sysdate,'yyyy-MM-dd HH:mm:ss') from dual;
select to_char(sysdate,'yyyy-MM-dd hh:mm:ss') from dual;
--查询出来的是24小时制的
select to_char(sysdate,'yyyy-MM-dd hh24:mm:ss') from dual;
select to_char(sysdate,'yyyy"年"MM"月"dd"日" hh24"时"mm"分"ss"秒"') 系统当前时间 from dual;
B.将date类型转换成字符串类型 to_char(date类型,'转换格式')
--查询员工信息将入职时间转换成****年**月**日的格式并按降序排列
select to_char(hiredate,'yyyy"年"MM"月"dd"日"') [as] 雇佣日期 from emp order by hiredate desc;
说明:
b1.[as]表示as关键字可带,可不带;
b2.年月日需加上双引号;
b3.别名不能加双引号。
C.将字符串类型转换成date类型 to_date('字符串类型','要转换的date类型格式')
--新增一条员工信息,雇佣时间为当前时间
insert into emp values(员工编号,null,null,null,to_date(to_char(sysdate,'yyyy-MM-dd'),'yyyy/MM/dd'),null,null,null);
说明:
c1.如果直接sysdate的话,插入的时间带有时分秒;
c2.将系统时间格式化后在插入:需先将其转换成字符串类型,进行格式化,再转换成指定格式的日期类型
--新增员工
insert into emp values(员工编号,null,null,null,to_date('2017-06-01','yyyy/MM/dd'),null,null,null);
D.当月一号至系统当前时间
--开始日期(管道符||表示用来拼接字符串)
SELECT TO_CHAR(SYSDATE,'YYYY-MM')||'-01' FROM DUAL;
--结束日期
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL;
UpdateTime--2017年7月21日14:53:12
E.使用trunc()函数对日期进行处理(截取,获取本周一的日期)
见下面1.3.17.1.2 trunc函数处理日期
F.
4.TRIM()--去除空格
TRIM(T1.FITEMHOSCODE) FITEMHOSCODE
2023年2月2日10:48:09
trim():去除字符串左右两边空格;
ltrim():去除字符串左边空格;
rtrim():去除字符串右边空格;
5.SUBSTR()--截取字符串
语法:
格式一:substr(str,i,n) 从第i个字符开始截取字符串,截取n个字符,区间 [i,i+n)
格式二:substr(str,i) 从第i个字符开始截取字符串至str的最后一个字符,区间 [i,str.length() - i + 2)
说明:
需要特别注意的是,与js不同的是:i不是字符所在下标索引,而是长度!
--截取月
--正确截取
select substr( '2018-07-27' , 6, 2) 月 from dual --07
--错误截取
select substr( '2018-07-27' , 7, 2) 月 from dual --7-
当i=0或1时,都是从第一位开始截取;
--截取年
select substr( '2018-07-27' , 0, 4) 年 from dual --2018
select substr( '2018-07-27' , 1, 4) 年 from dual --2018
当i<0时,从右往左数,第-i个开始截取,截取n个字符;
--截取月和日
select substr( '2018-07-27' ,-5,5) "月-日" from dual --07-27
当j>str.length()时,最后一位是str的最后一个字符。
--截取月和日
select substr( '2018-07-27' , 6) "月-日" from dual --07-27
select substr( '2018-07-27' , 6, length( '2018-07-27' ) - 6 + 1) "月-日" from dual --07-27
select substr( '2018-07-27' , 6, 200) "月-日" from dual --07-27
注意:由于-是关键符,所以别名需要用""包住。
6.UPPER()--将内容全部转换成大写
UPPER(T2.FITEMCODE(+))
UPPER('%' || #FICDNAME#||'%')
7.LOWER()--将内容全部转换成小写
UPPER(X2.FICDCODE) Like '%' || upper(?) || '%' or X2.FICDNAME like '%' || ? || '%'
8.NVL()
语法:
NVL(param1,param2)
含义:
a.用于判断第一个参数是否为空,如果param1==null,该函数值为param2;否则,该函数值为param1;相当于java中的三元运算符 value=param1 ? param1 :param2;
b.展示数据时,通常用来将null替换为0,在计数时通常使用。
举例:
NVL(column,0) --如果该字段内容为空,则显示为0
9.SUM() 求和
语法:
SUM(数字column)
2021年12月22日11:31:19
如果原数据字段为空,求和结果也为空
10.DECODE()--分支函数
语法:
DECODE(VALUE,IF1,THEN1,IF2,THEN2,ELSE) 是对CASE WHEN 的简化
举例:
SELECT ENAME,DECODE(sal,800,sal+50,950,sal+5,sal) AS 员工薪水 FROM EMP;
11.COUNT(1),COUNT(*),COUNT(columnName)
COUNT(1)与COUNT(*) --都可用来查询表中有多少条数据(列)
COUNT(columnName) --字段内容为空的不会被计数
举例:对字段值的唯一计数
SELECT count(distinct fdeptcode) FROM tdeptorg;
12.GREATEST()--最大值
语法:
GREATEST(column1,column2,...)
输出该行数据的最大值
13.LEAST()--最小值
语法:
LEAST(column1,column2,...)
输出该行数据的最小值
举例:
查询苹果四季度销量的最大值和最小值
14.MAX()--最大值
语法:
MAX(数字column)
输出该字段的最大值
15.MIN()--最小值
语法:
MIN(数字column)
输出该字段的最小值
小结:
a.GREATEST()和LEAST(),横向比较,输出的是该行数据的最大值或最小值,后面可以跟其他字段一块进行查询;
b.MAX()和MIN() ,纵向比较,输出的是该字段的最大值或最小值,后面不能跟其他字段一块进行查询;
c.这四个函数通常用于比较数值字段,也可以用来比较其他类型字段,但是没意义。
16 EXISTS(),IN(),NOT EXISTS(),NOT IN()
16.1 EXISTS()与IN()
区别:
a.EXISTS是一个存在判断,如果后面的查询中有结果,则exists为真,否则为假
用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False。
b.in 是一个集合运算符,a in {a,c,d,s,d....},这个运算中,前面是一个元素,后面是一个集合,集合中的元素类型是和前面的元素一样的
它后面带的select一定是选一个字段,而不是select *
c.sql
select * from 表A where exists(select * from 表B where 表B.id=表A.id)
这句相当于
select * from 表A where id in (select id from 表B)
d.子查询表大的用exists,子查询表小的用in
16.2 NOT EXISTS()与NOT IN()
区别:
如果查询语句使用了not in,那么对内外表都进行全表扫描,没有用到索引;而not exists的子查询依然能用到表上的索引。所以无论哪个表大,用not exists都比not in 要快。
UpdateTime--2017年6月7日14:21:19
参考链接:http://blog.csdn.net/iteye1011/article/details/12449393
17.TRUNC()与ROUND()
17.1 TRUNC()
1.3.17.1.1 trunc函数处理数字
用途:单纯地对数字进行截取处理,不做四舍五入操作
语法:
TRUNC(number[,decimal_places])
参数说明:
number 待做截取处理的数值
decimals 指明需保留小数点后面的位数。可选项,不带该参数时,截去所有的小数部分。
具体用法:oracle 补齐两位小数(不足补0)
1.3.17.1.2 trunc函数处理日期
用途:对日期进行截取处理
语法:
TRUNC(date[,fmt])
具体用法:Oracle trunc()、interval、extract()处理日期类型
17.2 ROUND()
用途:对数字进行四舍五入操作
用法:和tranc()函数的用法大致相同,不同的是使用该函数会以四舍五入的方式进行截取
1.不带第二个参数,默认只保留整数位,执行四舍五入操作;
2.带第二个参数:
2.1 当参数为正数时:
2.1.1 当要保留的小数位 < 要截取的小数位数时,进行截取并四舍五入;
2.1.2 当要保留的小数位 > 要截取的小数位数时,返回原数字。
2.2 当参数为负数时:
2.2.1 当要保留的整数位 < 要截取的整数位数时,从整数的个位倒序(个,十,百...位)进行截取并四舍五入;
2.2.2 当要保留的整数位 > 要截取的整数位数时,返回0。
语法:
ROUND(number[,decimal_places])
参数说明:
number 待做四舍五入的数值
decimal_places 四舍五入 , 保留几位小数。可选项,不带该参数时,只保留整数,执行四舍五入操作。
举例:
--情景1:参数带小数,不带第2个参数
SELECT round(123) FROM DUAL;--123
SELECT round(123.98) FROM DUAL; --124
--情景2:参数是整数,保留1位小数
SELECT round(123, 1) FROM DUAL; --123
--情景3:参数带小数,保留2位小数
SELECT round(123.123, 2) FROM DUAL; --123.12
--情景4:参数带小数,保留4位小数
SELECT round(123.123, 4) FROM DUAL;--123.123
--情景5:保留到十位
SELECT round(123.123, -1) FROM DUAL; --120
SELECT round(123, -1) FROM DUAL; --120
--情景6:保留到小数点前 5位
SELECT round(-123.123, -5) FROM DUAL; --0
关于截取日期的用法,见文末推荐。
18.CEIL()与FLOOR()
1.3.18.1 CEIL()
用途:取大于等于数值number的最小整数
语法:
CEIL(number)
举例:
--大于已知数的最小整数
SELECT CEIL(10.1) FROM DUAL;--11
--等于已知数的最小整数
SELECT CEIL(10) FROM DUAL;--10
1.3.18.2 FLOOR()
用途:取小于等于数值number的最大整数
语法:
FLOOR(number)
举例:
--小于已知数的最大整数
SELECT FLOOR(10.1) FROM DUAL;--10
--等于已知数的最大整数
SELECT FLOOR(10) FROM DUAL;--10
UpdateTime--2017年6月29日10:07:58
19.CONCAT()--字符串拼接
字符串拼接,通常使用管道符||
用途:拼接字符串,不推荐使用
语法:
CONCAT('字符1','字符2')
举例:
--CONCAT只能连接两个字符串
SELECT concat('Mary','don') as 姓名 FROM DUAL;
--||可以连接多个字符串
SELECT 'Mary' || 'don' as 姓名 FROM DUAL;
UpdateTime--2017年7月21日14:56:43
20.NEXT_DAY()
用途:获取指定时间的下一个星期几(由char指定)所在的日期
语法:
NEXT_DAY(date,char)
date-日期类型
char-数字1~7或Monday~Sunday
注意:
(1)数字1~7分别代表星期日~星期六,1表示星期日,2代表星期一,以此类推;
(2)当第二个参数传的星期数<=现有星期数时,会返回下一个星期的日期;当第二个参数所传的星期数>现有星期数时,则会返回本周的相应星期日期。
举例:根据系统当前时间查出本周一和本周日所在日期
--根据系统当前时间查出本周一和本周日所在日期
--方法一
SELECT SYSDATE 当前日期,TRUNC(SYSDATE,'iw') 本周一,NEXT_DAY(TRUNC(SYSDATE,'iw'),1) 本周日 FROM DUAL;
--方法二
SELECT SYSDATE 当前日期,TRUNC(SYSDATE,'iw') 本周一,TRUNC(SYSDATE,'iw')+6 本周日 FROM DUAL
结果展示:
21.REPLACE()--替换指定内容
语法:
replace(字符串,被替换字符串,替换后的字符串)
REPLACE ( '2018-07' , '-' , '' )
number[(总位数[,小数位])]
默认情况下,可以不设置可存储数值的位数;
当不设置小数位时,只能存储整数;
number(5,3)表示的是:可存储5-3=2位整数,小数点后保留3位。
2023年2月2日10:50:32
22.TRANSLATE()--替换指定内容
剔除字符串当中的数字
SELECT X.USERCODE, TRANSLATE(X.USERCODE, '/0123456789', '/')
FROM BASE_AC_USER X
写在最后
哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!
相关推荐:
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/6930039.html