Oracle中各种字段类型处理(日期加减、数字、字符串)
1、 日期(加减、格式转换)
1)日期类型的加减
天数可以直接加减(可以引申到时分秒的加减);
月(引申到年)的加减可以用函数add_months();
2)日期之间的加减
两个日期相减,返回的单位为天,小时及分秒会换算成小数;
两个日期相减,返回的单位为月;
3)日期字符串互相转换
转为日期,可以用date'YYYY-MM-DD'或者to_date(日期或字符串日期,格式),格式:'yyyy-MM-dd'、'yyyy-MM-dd hh24:mi:ss'
转为字符串,可以用to_char(日期或字符串日期,格式),格式:'yyyyMMdd'、'yyyy-MM-dd'、'yyyy-MM-dd hh24:mi:ss'
4)查询日期具体情况
5)其他格式
trunc(DATEVALUE):DATEVALUE为date类型,获取该日期的年月日;
extract(DATA FROM DATEVALUE):获取日期的一部分值;
如果DATEVALUE为DATE类型,则DATA可以是(YEAR、MONTH、DAY)
如果DATEVALUE为TIMESTAMP类型,则DATA可以是(YEAR、MONTH,DAY、HOUR、MINUTE、SECOND)
LAST_DAY(DATE):返回日期所在月份的最后一天日期
2、 数字类型处理
1)round(四舍五入)
round函数就是返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果 。
语法是:round(number,num_digits),即:round(数值,保留的小数位数)
![](https://img2022.cnblogs.com/blog/941360/202201/941360-20220120110436098-1528216800.png)
2)trunc(非四舍五入,按位截取)
语法是:trunc(number,num_digits),即:trunc(数值,保留的小数位数)
![](https://img2022.cnblogs.com/blog/941360/202201/941360-20220120110526350-40631229.png)
3)floor(非四舍五入取整)
语法是:floor(number),即:floor(数值)
4)ceil(四舍五入取整)
语法是:ceil(number),即:ceil(数值)
5)ABS(用于返回数字的绝对值)
语法是:ABS(number),即:ABS(数值)
5)数字格式化(数字转字符串)
语法是:to_char(number)。
备注:
用to_char(number)直接转,如果number是小于1的数字时候会存在小数点前面的0不会展示(例1.1),可以用to_char(number,'FM90D999')
【FM90D999】是指转化格式,其中【FM】是删除9带来的空格(例1.2),【D】是小数点(例1.3);
其中在【D】前后的【9】和【0】是指转化数字的位数(可以同时存在,各自满足,也可以互补满足);
【D】前的不满足位数会返回”#“(例2),
满足位数会返回正常,区别是【0】超过正常位数后不管是【D】前后都会补0(例3.1),【9】不会做处理(例3.2)
3、 字符串类型处理
1)判断字符串的长度
语法是:length(varchar)。
length函数就是返回一个数值,该数值是指字符串的长度。
2)替换字符串中某个字符
2.1)REPLACE:与REPLACE的功能相似
语法是:replace(字符 ,'字符' , ‘替换的字符’)。replace函数就是返回一个字符。
2.2)REGEXP_REPLACE:与REPLACE的功能相似
3)判断某个字符在字符串中出现的次数
语法是:LENGTH(字段) - LENGTH(REPLACE(字段, '字符' ,''))。返回的是一个数字
4)截取字符串
4.1)SUBSTR
语法是:SUBSTR(字段 , number1,number2)。number1(数字)字符串开始的位置;number2(数字)截取的长度,从number1开始到算。
SUBSTR(字段 , number1)。number1(数字)字符串开始的位置;到结束。
4.2)REGEXP_SUBSTR:与SUBSTR的功能相似
语法是:REGEXP_SUBSTR(String,pattern,position,occurrence ,modifier )
String:操作的字符串;
pattern:正则表达式匹配规则,匹配到则返回;
position:开始匹配的位置,默认当然是1;
occurrence:标识第几个匹配组,默认为1;
modifier:模式(‘i‘不区分大小写进行检索,‘c‘区分大小写进行检索。默认为‘c‘)
可以实现字符串字段列转行,如下:
5)判断某个字符是否存在另一个字符中
5.1)INSTR:
语法是:INSTR(string1, string2) ,instr(源字符串, 目标字符串),返回 > 0 的数字代表存在。
INSTR(string1, string2, start, nth_appearance ) ,instr(源字符串, 目标字符串, 起始位置, 第几次出现)
5.2)REGEXP_INSTR:与INSTR的功能相似