本小白日常oracle学习总结,若有错误望海涵,并希望大神能指点迷津
单行函数:完成某一具体功能的操作函数
分为以下几种:字符串函数、数值函数、日期函数、转换函数、通用函数
1. 字符串函数:
主要处理字符串数据(数据可能从列上或者直接设置的常量)
upper (列|字符串)-------将传入的字符串变为大写
用法:
select upper (pinym) from ryxx
&表示输入执行后根据你输入的数值进行操作
select* from ryxx where pinym = upper('&a')
lower (列|字符串)-------将传入的字符串变为小写(同upper)
initcap (列|字符串)---------开头首字母大写,其余小写
例:update ryxx set pinym = initcap(pinym)
length(列|字符串)----------返回字符串的长度
substr(rukmxh,15,6) --截取rukmxh字段从第十五位之后的六个字符
substr(rukmxh,length(rukmxh)-3)–可以嵌套使用
replace(列|字符串,原字符,替换字符)------替换函数
select replace(name,'张三','李四') from dual;
\\把dual中name为张三的换成李四
2. 数值函数
**round(列|数字,数字)**四舍五入(如果设置为负数,则会进行整数位的四舍五入)
例:
select round(789.25685,2) from dual
trunc(列|数字,数字) 数字截取,不进位
使用方法与round函数相识,唯一的区别就是trunc函数直接把小数点扔掉,不进位
mod(数字,数字) 求模(计算余数)
例:
select mod(3,2) from dual
\\结果为1
floor(列|数字)-------向下取整
//5.6=5
ceil(列|数字)--------向上取整
//5.2=6
**
abs(列|数字)--------取绝对值
//-9=9
3. 日期函数
**
oracle为日期提供了一个伪列,sysdate ,systimestamp
伪列:不是自己创建的列,但是存在在每一个表中
sysdate伪列,提供当前日期 --本次sysdate日期:2019-02-16 17:30:01
例:
select sysdate,caozyxm from caozyxx
日期操作公式:
日期+数字=日期–表示若干天之后的日期
日期-数字=日期–表示若干天之前的日期
日期-日期=数字–表示间隔天数,可为负数
注:由于每个月天数不同,使用加法计算日期不准确
**add_months()**在指定日期上加上月数
例:select add_months(sysdate,5) from dual
**months_between(列|日期,列|日期)**返回间隔的月数
例:select trunc(months_between(sysdate,sysdate-300)) from dual
**last_day(列|日期)**返回当前日期所在月的最后一天
例:select last_day(sysdate) from dual
**next_day(列|日期,星期几)**返回当前日期后的下一个周几是几号
例:select next_day(sysdate,'星期日') from dual
**
4. 转换函数
**
to_char(列|日期|数字,转换格式) ---- 将日期或数字转化为指点日期的字符串
转换格式:
日期:yyyy-mm-dd
时间:hh-mi-ss/hh24-mi-ss
数字:任意数字(9) 本地货币符号(L)
日期转换:select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
使用to_char函数可以实现日期格式的拆分
例
select to_char(sysdate,'yyyy'),to_char(sysdate,'mm') from dual;
数字转换:
select to_char(56865566566,'L999,999,999,999,999,999,999') from dual;
to_date(列|字符串,转换格式)—按照指定格式将编写的字符串转换为日期函数
例:
select to_date('1998-02-01','yyyy-mm-dd') from dual;
to_number(‘字符串’)—将一串字符串转换为数字(不常见,因为oracle中可以自动转换为数字)
例:
select to_number('1')+to_number('2') from dual;
**
**
5. 通用函数
**
**
nvl(列|null,默认值)—如果传入的值为空,则使用默认值处理,如果不为空,则使用原始数值处理
根据以上表格:
select yi,er,(yi+er) from 表名
会得出:
注:这是因为第一行第二列中数据为空值,oracle不确定值为多少,返回空值,这种情况应该用nvl函数处理
select yi,er,(yi+nvl(er,0)) from ceshi
decode(列|字符串|数值,比较内容1,显示内容1,比较内容2,显示内容2,…[默认显示内容])
解释:设置的内容会与比较内容进行比较,如果内容相同,则会使用显示内容显示,如果都不相同,则使用最后的默认显示。默认为可选内容,如果没有设置默认值,则显示为空
例:
select yi,decode(er,null,'无',100,'中级','高级') er from ceshi
原表:
执行语句之后:
instr(列|字符串, 值)函数
描述:值在列|字符串中查找,返回从开始查第几个是
举例:
instr(hello,l)返回3,即第一次出现l的位置
instr(caozyxm,‘admin’),即该值中有admin返回1,没有则返回0
**
系统函数:
**
sys_context
通过该函数可以查看出一些重要信息:
terminal:当前会话客户单所对应的终端的标识符;
language:语言,字符集
db_name:当前数据库名称;
nls_date_format:当前会话客户所对应的日期格式;
session_user:当前会话客户所对应的数据库用户名;
current_schema:当前会话客户所对应的默认方案名;
通过select sys_context('userenv','language') from dual