ORACLE学习(三)
--数值函数
1、abs(值) 绝对值
正数的绝对值是它本身 负数是他的相反数 0是0
SELECT ABS(6),ABS(-5),ABS(0)
FROM DUAL;
2、MOD(数1,数2) 取余
数1÷数2 。。。。。。取余
数2可以为0 结果是数1
结果的正负只和数1有关
FROM DUAL;
--假设员工编号奇数为男 偶数为女 囚所有的男员工的信息
SELECT *
FROM EMP
WHERE MOD(EMPNO,2)=1;
3、ceil(数) 向上取整
4、floor(数) 向下取整
SELECT CEIL(4.5),CEIL(-4.5),FLOOR(4.5),FLOOR(-4.5)
FROM DUAL;
5、round(数1[,数2]) 四舍五入
数2 保留的小数位数 不写默认保留到整数
小数位数不够 不会补0
数2为负数 是保留到小数点前几位
SELECT ROUND(3.14,1),ROUND(3.14),ROUND(3.14,3),
ROUND(1354,-2)
FROM DUAL;
6、trunc(数1[,数2]) 截断 ---不进位
数2 保留的小数位数 不写默认保留到整数
小数位数不够 不会补0
数2为负数 是保留到小数点前几位
SELECT trunc(3.14,1),trunc(3.14),trunc(3.14,3),
trunc(1354,-2)
FROM DUAL;
7、sign(数) 判断正负零
正数返回1 负数返回-1 0返回0
SELECT SIGN(6),SIGN(-6),SIGN(0)
FROM DUAL;
8、POWER(数1,数2) 次方和开方
数1的数2次方
数2为分数表示开方
SELECT POWER(2,3),POWER(16,1/4),POWER(2,-3),POWER(32,-1/5)
FROM DUAL;
--字符函数
1、upper(str) 转大写
2、lower(str) 转小写
3、initcap(str) 首字母大写
如果有多个字母 那么每个字母的首字母都会变成大写
英文字母中间有非英文字母就认为是不同的单词
SELECT UPPER('I love eat banana'),lower('I LOVE EATING BANANA'),
INITCAP('i我love爱eat吃banana香蕉')
FROM DUAL;
--查询员工姓名 转首字母大写 职位转小写
SELECT INITCAP(ENAME),
LOWER(JOB)
FROM EMP;
3、length(str) 字符长度
4、lengthb(str) 字节长度(占内存的大小)
注:字符长度不一定等于字节长度
1byte=8bit
1KB=1024byte
1MB=1024KB
1GB=1024MB
SELECT LENGTH('ABC'),LENGTHB('ABC'),
LENGTH('中国'),LENGTHB('中国')
FROM DUAL;
--查询员工姓名的字符长度和字节长度
select ename,length(ename),lengthb(ename)
from emp;
6、trim(str) 去两端的空格
7、ltrim(str1[,STR2]) 去除str1左边的str2
8、rtrim(str1[,str2]) 去除str1右边的str2
不写str2默认去空格
SELECT TRIM(' ABC ')||'D',LTRIM(' ABC'),
RTRIM('ABC CC','C')||'D'
FROM DUAL;
--查询员工编号 先去掉左边的7在去掉右边的8
SELECT EMPNO, RTRIM(LTRIM(EMPNO,7),8)
FROM EMP;
9、lpad(str1,数,str2) 在str1的左边填str2 填充之后的总长度是数
10、rpad(str1,数,str2) 在str1的右边填充str2 。。。。。。数
str1 源字符串
str2 要填充的字符串
数 填充之后整体的字节长度,如果比原长度还要小就变成了截取
--在abc的左右两边各填充两个*
SELECT 'ABC'RPAD(LPAD('ABC',5,''),7,'')
FROM DUAL;
SELECT 'ABCDEFG',LPAD('ABCDEFG',4,'6'),
RPAD('ABCDEFG',3,'8')
FROM DUAL;
--在abc的左右两边各填充两个 '星'
SELECT RPAD(LPAD('ABC',7,'星'),11,'星')
FROM DUAL;
--在ename的两边各填充两个*
SELECT ENAME,RPAD(LPAD(ENAME,LENGTHB(ENAME)+21,''),
LENGTHB(ENAME)+4,'*')
from emp;
SELECT ENAME,''||ENAME||''
FROM EMP;
11、instr(str1,str2[,数1[,数2]]) 查找字符串出现的位置
str1 原字符串
str2 要找的字符串
数1 从第几位开始找 不写默认第一为找
负数表示从倒数第几位开始找
数2 找第几次出现 不写默认第一次
SELECT INSTR('HELLOWORLD','O') A, --第一位开始 找第一次
INSTR('HELLOWORLD','O',6) B, --第6位开始第一次
INSTR('HELLOWORLD','O',1,2) C,--第一位开始 第二次出现
INSTR('HELLOWORLD','O',-1) D, --倒数第一位 第一次
INSTR('HELLOWORLD','O',-5) E,--倒数第五位第一次
INSTR('HELLOWORLD','O',-1,2) F --倒数第一位 第二次
FROM DUAL;
注:当找不到的时候 返回0
--查询名字中包含A的员工信息
SELECT *
FROM EMP
WHERE INSTR(ENAME,'A')!=0;
--查询名字的第二个字母是L的员工信息
SELECT *
FROM EMP
WHERE INSTR(ENAME,'L',2)=2;
--查询员工姓名中A第一次和第二次出现的位置
SELECT ENAME,INSTR(ENAME,'A') 第一次,INSTR(ENAME,'A',1,2) 第二次
FROM EMP;
12、substr(str,数1[,数2]) 截取字符串
str 源字符串
数1 从哪儿开始截取 负数表示从倒数第几位开始截
数2 截取几位(没写默认截取到最后)
SELECT SUBSTR('HELLOWORLD',2),SUBSTR('HELLOWORLD',2,3),
SUBSTR('HELLOWORLD',-2),SUBSTR('HELLOWORLD',-5,2)
FROM DUAL;
--截取员工姓名中A的位置到最后(名字没有A的不显示)
SELECT ENAME,SUBSTR(ENAME,INSTR(ENAME,'A'))
FROM EMP
WHERE INSTR(ENAME,'A')!=0;
--I LOVE EAT RICE AND FRUIT 截取 E EAT RICE
SELECT SUBSTR('I LOVE EAT RICE AND FRUIT',
INSTR('I LOVE EAT RICE AND FRUIT','E'),
INSTR('I LOVE EAT RICE AND FRUIT','E',-1)-
INSTR('I LOVE EAT RICE AND FRUIT','E')+1
) AAAAAAAA
FROM DUAL;
13、replace(str1,str2[,str3])整体替换
把str1中的str2整体替换成str3
str3不写,默认替换成空
SELECT REPLACE('HELLOWORLD','LO','***'),
REPLACE('HELLOWORLD','LO')
FROM DUAL;
14、translate(str1,str2,str3)逐一替换
把str1里面的str2逐一替换成str3
SELECT TRANSLATE('HELLOWORLD','LO','!%')
FROM DUAL;
SELECT TRANSLATE('HELLOWORLD','LO','!%')A,
TRANSLATE('HELLOWORLD','LOE','!%')B,
TRANSLATE('HELLOWORLD','LO','!%@')C,
TRANSLATE('HELLOWORLD','LL','!%')D
FROM DUAL;
--参数3的位数比参数2多的时候,参数3多出来的位数无效
参数2的位数比参数3多的时候,参数2中多出来的位数被替换成空
同一参数多个替换,只有第一次有效
参数2为空或者参数3为空,最后结果就为空
SELECT *
FROM EMP;
--把helloworld中的lo替换成空
SELECT REPLACE('HELLOWORLD','LO')
FROM DUAL;
SELECT TRANSLATE('HELLOWORLD','#LO','#')
FROM DUAL;
--把员工姓名中的AMS三个字母替换成空
SELECT ENAME,TRANSLATE(ENAME,'AMS','')姓名
FROM EMP;
--把员工编号中的7替换成@,8换成$ 显示替换前后的编号
SELECT EMPNO,TRANSLATE(EMPNO,78,'@$')
FROM EMP;
15、concat(str1,str2)链接字符串
SELECT CONCAT(CONCAT('HELLO','WORLD'),'CHINA')
FROM DUAL;
16、to_single_byte(str)转半宽 半角
17、to_multi_byte(str)转全宽 全角
--查询emp中姓名和职位有相同字母的员工信息
str1 str2 str3
zhangdan dagong (参数3的字节要多于参数2)SELECT TRANSLATE('zhangsan','dagong','*')
FROM DUAL;
SELECT E.,ENAME,JOB,TRANSLATE(ENAME,JOB,LPAD('',LENGTHB(JOB),''))FROM EMP EWHERE ENAME!=TRANSLATE(ENAME,JOB,LPAD('',LENGTHB(JOB),'*'));
ORACLE学习(三)相关推荐
- 学习Oracle的三种境界
我接触Oracle是在本科毕设,当时顺着研究生导师的方向,写的是专利信息互联网爬虫.从各个专利局采集的专利信息,就需要进行存储,以前只用过SQL Server,所以打算尝个鲜,用Oracle 9i. ...
- oracle两表链接序列跳序,Oracle学习之 序列(Sequence)
Oracle学习之 序列(Sequence) [Oracle学习]之 序列(Sequence) oracle文档:https://docs.oracle.com/cd/B28359_01/server ...
- Oracle学习网站
Oracle学习网站 http://www.oracle-base.com 能弄懂这里面的文章,那oracle的基本功就非常扎实.(英) http://asktom.oracle.com/pls/ap ...
- 分享丨10年DBA老司机整理的Oracle学习路线图
微思10年资深DBA吴老师呕心沥血的分享总结-Oracle学习路线图,看完没收获你打我. 学习Oracle的前提是:熟悉Linux操作系统.Unix操作系统. 学习方法 1.sql.pl/sql 作为 ...
- oracle db-link 分布式数据库网络配置协议错误,Oracle学习(18)【DBA向】:分布式数据库...
数据物理上被存放在网络的多个节点上,逻辑上是一个整体. 分布式数据库的独立性 l分布数据的独立性指用户不必关心数据如何分割和存储,只需关心他需要什么数据. Oracle分布式RDBMS 本地操作 远程 ...
- Oracle学习计划
这两天,在网上参考了大量的文档,制定了Oracle学习的读书计划,共分三个阶段: 第一阶段: 目标: 系统学习.巩固基础. 书籍: (1)Oracle Concept, Oracle Performa ...
- oracle工作日记,Oracle学习日记【4】
1.查询所返回的列数以及列的类型必须匹配,列名可以不同. 2.只有UNION ALL不会去重.其他三个都需要排序后去重,性能比较差. 2.连接查询 2.1.内连接(INNER JOIN):INNER可 ...
- Oracle学习系列1-7
Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...
- Oracle学习笔记---(一)
Oracle学习笔记---(一) 一 1.Oracle简介 Oracle是以高级结构化查询语言(SQL)为基础的大型关系数据库:是一个对象关系数据库管理系统(ORDBMS).它提供了关系数据库 ...
- 内外兼修:Oracle ACED熊军谈Oracle学习
编辑手记:熊军是中国西部第一位,也是到目前为止唯一的Oracle ACE总监,在这篇文章中熊军描述了他的学习过程和理念供大家参考. ORACLE 的学习,就好比武侠小说中学武功.要从三方面入手: 1. ...
最新文章
- 机器学习数据预处理之离群值/异常值:MAD法(绝对值差中位数法)+绝对中位差(Median Absolute Deviation,MAD)
- linux/android 脚本相关
- 数据库的流程,制度,安全优化
- php图片变成代码怎么解决,一段图片处理代码PHP代码转C#代码,该怎么解决
- 机器学习(part4)--模型评估
- 韩师师范学院计算机科学与技术在哪个学区,2017年韩山师范学院本科插班生考试《数据结构》A卷...
- Jquery 实现原理之 Ajax
- 蓝桥杯 算法训练 Sticks
- 在Linux上安装Chef工作站
- python3.8+mysql+pymysql安装
- 2018年 数据挖掘“泰迪杯” C题 第一问
- wps怎么免费导出简历_简历怎么写 简历模板word免费下载
- 已知两点和弧长lisp_CAD插件——已知两点和弧长如何画圆弧?
- 【爬虫实战】利用scrapy框架爬取豆瓣图书信息
- c++实验3——个人税收计算器
- 【React】React三大属性:Props、State、Refs
- 基于Visual Studio 2017的opengl安装
- 联想小新触控板不行了
- AVAYA-RTX统一通信解决方案
- access h3c交换机光口_h3c交换机命令,很全面