Oracle 函数
1.REGEXP_LIKE()
>>高级like
使用语法
REGEXP_LIKE( EXPERSSION , PATTERN , MATCH_PARAMATER )
- EXPERSSION ,字符表达式,需要匹配的字段。
- PATTERN,正则表达式(前面文章有介绍,这里就不再介绍了)。
- MATCH_PARAMATER,可选参数,可以修改匹配方式。
‘c’ 执行区分大小写匹配。
‘i’ 执行忽略大小写匹配。
‘x’ 执行忽略空格匹配。
‘m’ 执行假定为单行匹配(无论是否有多行)。
‘n’ 允许.不匹配\n。
具体使用场景举例
比如一段sql找到姓赵、钱、孙、李的所有人。如果用like进行匹配就需要使用4个like。如果使用REGEXP_LIKE就只需要REGEXP_LIKE(NAME,’(赵|钱|孙|李)’)就可以进行匹配了。
除REGEXP_LIKE之外,支持正则匹配的还有
REGEXP_INSTR :与INSTR的功能相似
REGEXP_SUBSTR :与SUBSTR的功能相似
REGEXP_REPLACE :与REPLACE的功能相似
具体用法之后使用到的时候再了解
2.TRUNC()
>>按指定格式截取数据
使用语法
TRUNC( date/number , fmt/decimals )
- 第一个参数,可以是date日期也可以是number数字。
- 第二个参数是格式,也可以省略。
具体举例
select sysdate from dual;--2021-07-16 10:26:09返回当前时间
select trunc(sysdate) from dual;--2021-07-16 00:00:00,返回当天零点
select trunc(sysdate,'yy') from dual;--2021-01-01 00:00:00,返回当年第一天
select trunc(sysdate,'mm') from dual;--2021-07-01 00:00:00,返回本月的第一天
select trunc(sysdate,'d') from dual;--2021-07-11 00:00:00,返回本周第一天,为什么是周日?因为国外排序是日一二三四五六。
select trunc(sysdate,'dd') from dual;--2021-07-16 00:00:00,返回当前日期
select trunc(sysdate ,'HH24') from dual;--2021-07-16 10:00:00,返回本小时的开始时间
select trunc(sysdate ,'MI') from dual;--2021-07-16 10:32:00,返回本分钟的开始时间
select trunc(123.567,2) from dual;--123.56,保留多少位小数;
select trunc(123.567,-2) from dual;--100,也可为负数,负数代表往小数点左边截取,截取部分均补0;
select trunc(123.567) from dual;--123,默认截去小数点后面的部分;
3.ROUND()
>>四舍五入截取数字
使用语法
ROUND( number , decimal_places )
- number,待截取的数。
- decimal_places,保留小数的位数,可省略,省略表示丢掉小数。也可为负数,负数代表往小数点左边截取,截取部分均补0。
具体举例
select round(123.567,2) from dual;--123.57,保留多少位小数;
select round(123.567,-2) from dual;--100,也可为负数,负数代表往小数点左边截取,截取部分均补0;
select round(123.567) from dual;--123,默认截去小数点后面的部分;
select round(123.123,2) from dual;--123.12四舍五入;
4.MONTH_BETWEEN()
>> 获取两个日期相差月数
使用语法
MONTH_BETWEEN(date1,date2)
5.MOD()
>>获取A%B的值,如B=0,则返回A
使用语法
MOD(A,B)