实验2:oracle 在SELECT语句中使用单行函数
oracle单行函数
oracle单⾏函数字符串函数1、⼤⼩写转换函数:· 转⼤写:字符串 UPPER(字符串 | 数据列);· 转⼩写:字符串 LOWER(字符串 | 数据列)。
2、⾸字母⼤写,其余字母⼩写:字符串INITCAP(字符串 | 列)3、取得字符串长度:数字 LENGTH(字符串 |4、替换指定字符串的内容:字符串 REPLACE(字符串 | 列,要替换的内容,新的内容)5、字符串截取操作:· 由指定位置截取到结尾:字符串 SUBSTR(字符串 | 数据列,截取开始索引);· 指定截取的开始和结束位置:字符串 SUBSTR(字符串 | 数据列,截取开始索引,截取结束索引);字符串的索引下标是从 1 开始的SUBSTR()函数还可以设置为负数,表⽰由后的指定位置开始6、去掉左右空格函数:字符串 TRIM(字符串 | 列)7、截取年,⽉,⽇,时,分,秒。
extract ({ year|month|day| hour | minute | second }| { timezone_hour | timezone_minute }| { timezone_region | timezone_abbr }from { date_value | interval_value } )数字函数1、四舍五⼊函数:数字 ROUND(数字 | 列 [,保留⼩数位])2、截取⼩数函数:数字 TRUNC(数字 | 列 [,保留⼩数位]) 正数向后截取,负数向前截取select trunc(sysdate, 'yy') from dual;--当年第⼀天select trunc(sysdate, 'q') from dual;--当前时间所在的季度的第⼀天select trunc(sysdate, 'mm') from dual;--当⽉第⼀天select trunc(sysdate, 'd') from dual;--返回本周的第⼀天(周⽇为第⼀天)3、求模:数字 MOD(数字 1 | 列 1,数字 2 | 列 2)⽇期函数当前的系统⽇期时间,伪列:SYSDATE、SYSTIMESTAMP。
oracle中select使用总结
oracle中select使用总结Oracle是一种常用的数据库管理系统,它具有强大的查询功能。
在Oracle中,SELECT是用于从数据库中检索数据的关键字。
通过SELECT语句,可以从一个或多个表中选择一部分或全部列的数据,并按照特定的条件进行过滤和排序。
SELECT语句的基本语法如下:```SELECT列名1,列名2,...FROM表名WHERE条件;```下面是一些SELECT语句的常用用法总结:1.检索表中的全部数据:```SELECT*FROM表名;```这个语句会返回表中所有的行和列,"*"表示所有列。
2.检索指定列的数据:```SELECT列名1,列名2,...FROM表名;```在SELECT后面列出需要检索的列名,多个列名之间用逗号分隔。
3.检索数据并去除重复行:```SELECTDISTINCT列名FROM表名;```DISTINCT关键字用于去除查询结果中的重复行。
4.对数据进行排序:```SELECT列名FROM表名ORDERBY列名ASC(升序)/DESC(降序);```ORDERBY关键字用于对查询结果进行排序,默认为升序。
5.对数据进行条件过滤:```SELECT列名FROM表名WHERE条件;```WHERE关键字用于添加条件表达式,只有满足条件的数据才会被返回。
6.对数据进行模糊查询:```SELECT列名FROM表名WHERE列名LIKE'关键字';```LIKE关键字用于进行模糊查询,通常与通配符配合使用,%表示任意字符,_表示单个字符。
7.对数据进行分组:```SELECT列名1,列名2,...FROM表名GROUPBY列名;```GROUPBY关键字用于按照指定的列对结果进行分组。
8.对分组后的数据进行条件过滤:```SELECT列名1,列名2,...FROM表名GROUPBY列名HAVING条件;```HAVING关键字用于对分组后的结果进行条件过滤。
oracle的Select语句以及函数
oracle的Select语句以及函数1 Select语句_函数查询语句SELECTselect ⽤于从数据中查询数据,形式:select field1 ,field2,.....from tablenamewhere condition例如:查询员⼯的名字和雇员号,⾸先的构思出从那个数据包中>>>> from emp使⽤select 查询,select emp.ename, emp.empno,其中字段的别名,⽤双引号,也可以省略。
select ename as " 姓名 "from emp;* 通配符表⽰查询所有字段。
如果要查特定字段时,不要使⽤*,影响查询效率。
select empno,ename,job,mgr,hiredate,sal,comm,deptnofrom emp;-- * 通配符表⽰所有字段select * from emp;distinct 去重把重复性的记录去掉,只保留⼀条。
select distinct e.job from emp e;where ⼦句where 表⽰查询的条件。
[1] =,!= ,<>,<,>,<=,>= 关系运算符<> 表⽰不等于-- 把部分10的雇员查询出来select *from empwhere deptno = 10;-- 把名称为smith的雇员select e.*from emp ewhere e.ename = 'SMITH';-- 查询底薪⼤于等于1000的员⼯select e.*from emp ewhere e.sal >= 1000;select e.*from emp ewhere e.sal <> 800any/some/all (list)any/some(list) 满⾜list列表中的任意⼀个条件all(list) 满⾜list列表的中所有条件nullnull 在sql中表⽰的是不确定 => 可以认为没有值between x and y表⽰⼀个值位于[x,y]区间,x/y ⼀般都是数字。
1.2 使用单行函数
大
• SQL函数的种类 • 单行函数
– – – – – – 字符函数 数字函数 日期函数 转换函数 嵌套函数 通用函数
纲
•
条件表达式
3-20
Copyright © Oracle Corporation, 2001. All rights reserved.
日期的使用
•
•
Oracle 数据库用内部数字格式存储日期:世纪,年, 月,日,小时,分钟和秒
• 作用于每一个返回行 • 每行返回一个结果 • 可以修改数据类型 • 可以嵌套 • 接受多个参数,参数可以是一个列或者一个表达式
function_name [(arg1, arg2,...)]
3-7
Copyright © Oracle Corporation, 2001. All rights reserved.
3-13
Copyright © Oracle Corporation, 2001. All rights reserved.
使用字符处理函数
1
SELECT employee_id, CONCAT(first_name, last_name) NAME, job_id, LENGTH (last_name), INSTR(last_name, 'a') "Contains 'a'?" FROM employees WHERE SUBSTR(job_id, 4) = 'REP';
大
• SQL函数的种类 • 单行函数
– – – – – – 字符函数 数字函数 日期函数 转换函数 嵌套函数 通用函数
纲
•
条件表达式
3-3
oracle常用单行函数
oracle常⽤单⾏函数(本⽂章内容仅在windows10下经测试能够运⾏,不能保证其他环境下的可靠性)oracle单⾏函数:作⽤于⼀⾏,返回⼀个值字符函数upper和lower,使⽤案例代码如下:---字符函数----upper(varchar)----将字符串中⼩写字母转换为⼤写----参数1:⼀个字符串select upper('yes') from dual; --output:YES----lower(varchar)----将字符串中⼤写字母转换为⼩写----参数1:⼀个字符串select lower('Yes') from dual; --output:yes数值函数round、trunc、mod,使⽤案例代码如下:---数值函数----round(number,[number(n)])函数----四舍五⼊取近似值----参数1:⼀个数值,要取近似值的数值----参数2:⼀个带符号整型数值,可选参数,不给定默认为0,负数表⽰精确到⼩数点前⼏位,正数表⽰精确到⼩数点后⼏位select round(26.18) from dual; --output:26select round(26.18,1) from dual; --output:26.2select round(26.18,-1) from dual; --output:30select round(56.18,-2) from dual; --output:100----trunc(number,[number(n)])函数----截取取近似值----参数1:⼀个数值,要取近似值的数值----参数2:⼀个带符号整型数值,可选参数,不给定默认为0,负数表⽰截取到⼩数点前⼏位,正数表⽰截取到⼩数点后⼏位select trunc(26.18) from dual; --output:26select trunc(26.18,1) from dual; --output:26.1select trunc(26.18,-1) from dual; --output:20select trunc(56.18,-2) from dual; --output:0----mod函数----求余函数/取模函数----参数1:被模数----参数2:模数select mod(10,3) from dual; --output:1⽇期函数和变量months_between函数和sysdate系统时间,使⽤场景案例代码如下:---⽇期函数---查询emp表每个员⼯⼊职天数select sysdate-e.hiredate from emp e;----查询⼀天后的时间select sysdate+1from dual; --output:2020/5/29 11:23:16---查询emp表每个员⼯⼊职⽉数select months_between(sysdate,e.hiredate) from emp e;----months_between(date,date)函数----求两个⽇期间相隔的⽉数,结果带符号,以第⼆个⽇期参数晚于第⼀个⽇期参数为正⽅向----参数1:减⽇期----参数2:被减⽇期select months_between(e.hiredate,sysdate) from emp e;select months_between(e.hiredate,e.hiredate) from emp e;---查询emp表每个员⼯⼊职周数select round((sysdate-e.hiredate)/7) from emp e;---查询emp表每个员⼯⼊职年数select round(months_between(sysdate,e.hiredate)/12) from emp e;转换函数to_char和to_date,使⽤案例代码如下:---转换函数----to_char(date,varchar)----⽇期转换为字符串----参数1:⼀个⽇期类型参数,表⽰欲转化为字符串的⽇期----参数2:⼀个字符串类型参数,表⽰⽇期转化为字符串的格式select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual; --output: 2020-05-28 11:37:03select to_char(sysdate,'fm yyyy-mm-dd hh:mi:ss') from dual; --output: 2020-5-28 11:37:12select to_char(sysdate,'fm yyyy-mm-dd hh24:mi:ss') from dual; --output: 2020-5-28 11:37:24--⽇期格式占位符yyyy--四位年份mm--⽉份dd--⽇期hh--⼩时hh24--24⼩时制时间mi--分钟ss--秒数fm--不带前导零---to_date(varchar,varcahr)----将字符串类型数据转换为⽇期类型数据----参数1:欲转换为⽇期类型的字符串数据----参数2:⽇期字符串的格式select to_date(' 2020-5-28 11:37:24','fm yyyy-mm-dd hh24:mi:ss') from dual; --output:2020/5/28 11:29:54通⽤函数nvl函数,使⽤场景和案例代码如下:---计算emp每个员⼯⼀年的年薪---null值与任何数值作算术运算,结果均为nullselect e.sal*12+nvl(m,0) from emp e;---通⽤函数---nvl(varchar/null/number,data)----当参数1为null时返回残数2,否则返回参数1----参数1:任意类型数据----残数2:任意类型数据select nvl(null,sysdate) from dual; --output:2020/5/28 11:45:50select nvl('null',11) from dual; --output:null(字符串)。
oracle基本select语句
一、什么是Oracle数据库Oracle数据库是由美国Oracle公司开发并销售的一款关系型数据库管理系统(RDBMS)。
它是目前全球领先的企业级数据库,广泛应用于各行各业的大型企业和组织中。
Oracle数据库提供了丰富的功能和强大的性能,使其成为众多企业和组织首选的数据库管理系统之一。
二、Oracle数据库的基本SELECT语句在Oracle数据库中,SELECT语句是应用最为广泛和基础的查询语句,用于从数据库中检索数据。
基本的SELECT语句包括以下几个关键要素:1. 选择要检索的列SELECT语句的最基本形式是从指定的表中选择所需的列。
语法格式如下:```sqlSELECT column1, column2, ...FROM table_name;```这个语句将从指定的表中检索出所需的列,然后将其显示出来。
2. 指定要检索的表在SELECT语句中,需要指定从哪个表中检索数据。
语法格式如下: ```sqlSELECT column1, column2, ...FROM table_name;```这个语句将从指定的表中检索出所需的列,然后将其显示出来。
3. 添加查询条件有时候我们并不需要检索表中的所有数据,而是只想要满足某些特定条件的数据。
在这种情况下,可以使用SELECT语句的WHERE子句来添加查询条件。
语法格式如下:```sqlSELECT column1, column2, ...FROM table_nameWHERE condition;```这个语句将根据指定的条件,从表中检索出满足条件的数据,然后将其显示出来。
4. 对检索的数据进行排序有时候,我们需要以特定的顺序显示检索出的数据,这时可以使用SELECT语句的ORDER BY子句对数据进行排序。
语法格式如下:```sqlFROM table_nameORDER BY column1, column2, ... ASC|DESC;```这个语句将根据指定的列对检索出的数据进行升序(ASC)或降序(DESC)排序,然后将其显示出来。
Oracle中的单行函数
Oracle中的单⾏函数字符串函数:注意SUBSTR 如果向要从后向前截取,可以使⽤负数来表⽰例如:SUBSTR('helloword',-3),表⽰截取最后三个字符,不写长度.默认从开始截取到字符串的末尾.以上函数除了INITCAP以外都可以在mysql中使⽤程序中的字符串,下标从0开始,数据库中的下标从1开始,Oracle中,如果下标写0.则按照1处理,在mysql中,不会返回任何结果数学函数注意,ROUND,和TRUNC函数都可以是⽤以下格式ROUND(889.99,-2) 这样中格式,⼩数位数可以是负数,当⼩数位数是负数时,例⼦中的结果是900在mysql中没有TRUNC函数,有功能相同的TRUNCATE函数,⽤法也和Oracle中的TRUNC函数相同.时间函数在⽇期中有如下三个操作: ⽇期+数字=⽇期(表⽰若⼲天之后的天数) ⽇期-数字=⽇期(表⽰若⼲天前的天数) ⽇期-⽇期=天数(表⽰两个⽇期相差多少天)但是这种计算的结果不精确,在oracle中不精确,在mysql中结果会是⼀种错误的结果所以给出以下⽇期函数使⽤⽇期函数进⾏⽇期的计算会很精确,但是以上的函数在mysql中只有LAST_DAY可以使⽤转换函数以上函数在mysql中不存在,只有Oracle中有例如我想要将现在的时间转换成字符串SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd') FROM dual;我们也可以从⽇期中获取年.⽉,⽇SELECT TO_CHAR(SYSDATE,'yyyy') from dual;还可以⽤来格式化数字SELECT TO_CHAR(5635192189372198731,'999,999,999,999,999,999,999,999,999') FROM dual;数字9.是任意数字的标记,在格式化数字或者货币的时候,定义的格式的字符串中,标记的位数必须⼤于需要转换的数据的位数货币的转换本地货币的标记是L,任意数字的标记是9通⽤函数NAL函数如果我们要查询员⼯表中,员⼯的编号,员⼯的姓名,员⼯的年薪( 年薪=(⽉薪+绩效)*12 )但是有些员⼯没有绩效,这样的话,最后返回的结果,没有绩效的员⼯就没有年薪命令:select empno,ename,(sal+comm)*12 INCOME from emp;这时候我们就可以使⽤NVL函数命令select empno,ename,(sal+NVL(comm,0))*12 INCOME from emp;DECODE函数,这个函数⽐较重要,⾯试的时候可能会被问到完整的员⼯信息如下:如果我们想要查询员⼯编号,员⼯姓名,员⼯的job,但是员⼯的job名称却是英⽂,我们看着不太好看,想要将其显⽰为中⽂命令: Select empno,ename,job,DECODE(job,'CLERK','办事⼈员','SALESMAN','销售⼈员','MANAGER','经理','--') 职位 From emp ;。
oracle基础课程-select相关使用方法
select EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL from employees;
SET HEADING ON
列标题的默认显示
Sql*plus的默认显示
Date和character 型数据左对齐 Numeric 型数据右对齐 列标题默认显示为大写
SELECT first_name||' '||last_name||'''s phone number is '||phone_number "employee Phone number"
FROM employees;
DISTINCT关键字的用法
DISTINCT取消重复行
SELECT DISTINCT department_id
SELECT employee_id id, last_name as employee_name, salary "Salary", (400+salary)*12 "Annual Salary" FROM employees;
连接运算符的使用
采用双竖线(||)来做连接运算符 ,更清 楚地表达实际意思。
SELECT基本查询语句
基本查询语句语法:
SELECT [,...]} FROM
*|{[DISTINCT] 列名|表达式 [别名] 表名;
“*”号的使用 在查询语句中查找特定的列
查询公司所第有一部条门的查信询息。语句
SELECT * FROM departments;
第一条查询语句(续)
SE查LEC询T d公epa司rtm所ent_有id,部门的信息。
所有的单行函数
要求显示所有雇员的姓名以及姓名的后三个字符
方法1:select ename,SUBSTR(ename,LENGTH(ename)-2) FROM emp;:
方法2:select ename ,SUBSTR(ename,-3,3); //从倒数第三个开始取三个
数值函数:对数字进行操作
日期 + 数字 = 日期
日期 - 日期 = 数字(天数) //这里和java中不同,Java是得到毫秒数
显示10部门雇员进入公司的星期数
1。先获得当前时间:select sysdate from dual
2.求星期数: (当前日期 - 雇佣日期)/7 = 星期数
找出各月倒数第三天受雇的所有员工:
select empno from emp where LAST_DAY(hiredate)-2 = hiredate;
LAST_DAY(hiredate)意思是各月的倒数第一天,如果LAST_DAY(hiredate)-1显然是倒数第二天,那么LAST_DAY(hiredate)-2显然是倒数第三天
显示所有员工的前三个字符:
select SUBSTR(ename,0,3) from emp ;
----------------------------------------------------------------------
2.日期函数:
规律:
日期 - 数字 = 日期
select empno,ename,(SYSDATE - hiredate)/7 from emp; //不过这里求出来的日期是有小数点的哈
改进: select empno,ename,ROUND((SYSDATE - hiredate)/7) from emp;
oracle select 调用函数 -回复
oracle select 调用函数-回复Oracle是一种功能强大的关系型数据库管理系统,它提供了丰富的功能来处理和管理数据库中的数据。
其中,SELECT语句是最常用的查询语句之一,可以从表中检索数据。
在这篇文章中,我们将探讨如何在Oracle数据库中使用SELECT语句调用函数。
首先,我们需要了解函数在Oracle数据库中的基本概念。
函数是一种可重用的数据库对象,用于执行特定的操作并返回结果。
函数可以被调用并传递参数,可以在SELECT语句中使用。
Oracle数据库提供了许多内置函数,例如数学函数、字符串函数和日期函数等,同时也可以创建自定义函数来满足特定的需求。
在使用SELECT语句调用函数之前,我们需要确保函数已被创建并且可用。
如果我们想要使用Oracle数据库提供的内置函数,可以直接使用它们,无需任何额外的操作。
如果我们想要使用自定义函数,我们需要在数据库中创建函数,并确保它们已被编译并准备就绪。
要在SELECT语句中调用函数,我们可以使用以下语法:sqlSELECT function_name(arguments) FROM table_name;在这个语法中,function_name是要调用的函数的名称,arguments是该函数所需的参数,可以是常量、列名或其他表达式。
table_name是包含要查询数据的表的名称。
例如,假设我们有一个名为"employees"的表,其中包含员工的姓名、薪水和岗位。
我们还创建了一个名为"calculate_bonus"的函数,该函数根据员工的薪水和岗位计算奖金。
首先,我们需要在Oracle数据库中创建这个函数。
假设函数定义如下:sqlCREATE OR REPLACE FUNCTION calculate_bonus(salary NUMBER, job_title VARCHAR2)RETURN NUMBERISbonus NUMBER;BEGINIF job_title = 'Manager' THENbonus := salary * 0.1;ELSIF job_title = 'Salesperson' THENbonus := salary * 0.05;ELSEbonus := 0;END IF;RETURN bonus;END;/在这个例子中,我们根据员工的职位计算奖金。
Oracle常用的单行函数
‐‐LOWER(列名|表达式):将大写或大小写混合的字符转换成小写SELECT LOWER('HELLO')FROM dual;‐‐UPPER(列名|表达式) :将小写或大小写混合的字符转换成大写SELECT UPPER('heheheehheeh')FROM dual;‐‐INITCAP(列名|表达式) :将每个单词的第一个字母转换成大写,其余的字母都转换成小写.SELECT INITCAP('asfJKJ')FROM dual;‐‐字符处理函数‐‐CONCAT(str,str):连接两个值,等同于||.SELECT concat('Hello','World!'),'Hello'||'world!'FROM dual;‐‐SUBSTR(column | expression,n1[,n2])截子串,从n1开始截,截n2位 2不写默认为直到最后 SELECT substr('Helloworldhellojavahellooracle',8,2)FROM dual;‐‐INSTR(s1,s2,[,n1],[n2])子串出现的位置 返回s1中,子串s2从n1开始,第n2次出现的位置。
n1,n2默认值为1SELECT INSTR('Helloworldhellojavahellooracle','hello',1,2),INSTR('hello hellooraclehellohtml','oracle')‐‐空格也算个数FROM dual;‐‐LENGTH:取字符长度.LENGTHB:取字节长度,中文一个字符两个字节SELECT LENGTH('hellooracle'),LENGTH('hellojavahellooraclehellohtml')FROM dual;‐‐EPAD/LPAD(s1,n1,s2)返回s1被s2从右/左面填充到n1长度,位数不足用s2填充 SELECT RPAD('hello',12,'*'),LPAD('orcl',5,'#'),RPAD(5000,10,'*')FROM dual;‐‐TRIM:去除字符串头部或尾部(头尾)的字符,默认为空格 用到FROM关键字 SELECT TRIM(' hello oracle '),TRIM('h' FROM 'hehehehhh'),‐‐去掉字符串开头和结尾中的‘h’LTRIM('hhhhehhehehhh','h'),‐‐省掉FROMRTRIM('hhhhehhehehhh','h')FROM dual;‐‐REPLACE(s1,s2,s3):把s1中的s2用s3替换SELECT REPLACE('hellojavailovejava','java','oracle'),REPLACE('hehehe hehe hehehhhh','h',''),REPLACE(' hello oracle ',' ' ,'')FROM dual;‐‐数字函数‐‐ROUND(列名|表达式, n):将列或表达式所表示的数值四舍五入到小数点后的第n位SELECT ROUND(4585.239,2 ),ROUND(4585.239,0),‐‐保留到整数ROUND(4585.239,‐2)—保留到百位FROM dual;‐‐TRUNC(列名|表达式,n):将列或表达式所表示的数值截取到小数点后的第n位 SELECT TRUNC(4585.239,2 ),TRUNC(4585.239,0 ),TRUNC (4585.239,‐2 )FROM dual;‐‐MOD(m,n):取m除以n后得到的余数,即取模SELECT MOD(356,7)FROM dual;‐‐FLOOR()向下取整,一个参数,保留到整数,相当于trunc0,CEIL()向上取整 SELECT FLOOR(4585.55),CEIL(4585.45),CEIL(0.0512)‐‐去掉小数部分,整数部分加1FROM dual;‐‐日期函数‐‐SYSDATE:返回系统日期SELECT SYSDATEFROM dual;‐‐MONTHS_BETWEEN:返回两个日期间隔的月数(只计算日期,对时间无效) SELECT MONTHS_BETWEEN(to_date('2012/12/21','yyyy/mm/dd'),SYSDATE)FROM dual;‐‐ADD_MONTHS:在指定日期基础上加上相应的月数:小数无效SELECT ADD_MONTHS(SYSDATE,28),ADD_MONTHS(SYSDATE,28.5)FROM dual;‐‐NEXT_DAY:返回某一日期的下一个指定日期SELECT NEXT_DAY(SYSDATE,'星期三'),NEXT_DAY('02‐2月‐06','星期一')FROM dual;‐‐LAST_DAY:返回指定日期当月最后一天的日期SELECT LAST_DAY('18‐8月‐10'),LAST_DAY(SYSDATE)+1 ‐‐下个月的第一天FROM dual;‐‐ROUND(date[,'fmt'])将date按照fmt指定的格式进行四舍五入,fmt为可选项,如果没有指定fmt,则默认为DD’,将date四舍五入为最近的天。
Les03单行函数
字符函数
字符函数
大小写控制函数
LOWER UPPER INITCAP
字符控制函数
CONCAT SUBSTR LENGTH INSTR LPAD | RPAD TRIM REPLACE
6
大小写控制函数
这类函数改变字符的大小写。
函数 LOWER('SQL Course') UPPER('SQL Course') 结果 sql course SQL COURSE
33
RR 与YY日期格式
当前年 1995 1995 2001 2001 日期 27-8月-95 27- 8月-17 27- 8月-17 27- 8月-95 RR 格式 1995 2017 2017 1995 YY 格式 1995 1917 2017 2095
RR日期格式操作方式
指定的年份
0–49
当前的年份: 0–49 返回当前世纪 返回上一个世纪
使用 TO_NUMBER 函数将字符转换成数字:
select to_number(‘$3,300‘,’$9,999’) from dual
使用 TO_DATE 函数将字符转换成日期:
select to_date('2009年/12月/3日','yyyy" 年"/mm"月/"dd"日"') from dual
18
日期函数
函数
MONTHS_BETWEEN
描述
两个日期相差的月数
ADD_MONTHS
NEXT_DAY LAST_DAY ROUND
向指定日期中加上若干月数
指定日期的下一个日期 本月的最后一天 日期四舍五入 日期截断
oracle select 调用函数
oracle select 调用函数Oracle数据库中可以通过SELECT语句调用函数。
函数是一种特殊的存储过程,可以接收参数并返回值。
在SELECT语句中调用函数可以用于计算、转换数据等操作,可以使查询结果更灵活和可用。
使用SELECT调用函数的一般语法如下:sqlSELECT function_name(parameter1, parameter2, ...) FROM table_name;其中,function_name是要调用的函数名,parameter1, parameter2, ... 是函数接收的参数,table_name是查询的表名。
在调用函数时,需要注意以下几点:1. 函数名和参数需要按照函数的定义进行填写,确保参数的类型和顺序与函数定义一致。
2. 可以在函数名和参数之间添加别名,用AS关键字指定。
3. 可以在SELECT查询中同时调用多个函数。
下面将介绍一些常用的Oracle函数,以及如何使用SELECT语句调用这些函数。
1. 字符串函数Oracle提供了很多针对字符串的函数,如CONCAT、SUBSTR、UPPER、LOWER等等。
这些函数可以用于字符串的拼接、截取、大小写转换等操作。
举例,假设有一个名为employees的表,其中包含了员工的姓氏和名字两个字段,我们想要将姓氏和名字合并为全名,并且将其转换为大写。
可以使用以下SELECT语句调用函数来实现:sqlSELECT CONCAT(last_name, ', ', first_name) AS full_name,UPPER(CONCAT(last_name, ', ', first_name)) AS upper_full_name FROM employees;上述语句中,先使用CONCAT函数将姓氏和名字拼接为full_name,然后使用UPPER函数将full_name转换为大写,同时给这两个结果添加了别名。
oracle select 用法
oracle select 用法(最新版)目录1.Oracle Select 简介2.Oracle Select 基本语法3.Oracle Select 子句4.Oracle Select 示例正文【1.Oracle Select 简介】Oracle Select 是 Oracle 数据库查询语言中最基本的语句之一,用于从数据库表中检索数据。
它可以帮助用户获取所需的数据,并对数据进行筛选、排序等操作。
【2.Oracle Select 基本语法】Oracle Select 的基本语法如下:```SELECT column1, column2,...FROM table_nameWHERE condition;```其中:- column1, column2,...:表示要查询的列名,可以查询一个或多个列;- table_name:表示要查询的表名;- WHERE:表示查询条件,可以对查询结果进行筛选。
【3.Oracle Select 子句】Oracle Select 提供了多个子句,可以对查询结果进行更详细的定制。
常用的子句包括:- WHERE:用于指定查询条件;- ORDER BY:用于对查询结果进行排序;- GROUP BY:用于对查询结果进行分组;- HAVING:用于对分组后的结果进行筛选;- DISTINCT:用于去除重复的查询结果;- LIMIT:用于限制查询结果的数量;- OFFSET:用于指定查询结果的起始位置。
【4.Oracle Select 示例】假设有一个名为 "employees" 的表,包含以下列:id, name, department, salary。
- 查询所有员工的姓名和薪资:```SELECT name, salaryFROM employees;```- 查询薪资大于 5000 的员工的姓名和薪资:```SELECT name, salaryFROM employeesWHERE salary > 5000;```- 查询所有员工的姓名、部门和薪资,并按照部门进行排序:```SELECT name, department, salaryFROM employeesORDER BY department;```- 查询薪资最高的员工的姓名和薪资:```SELECT name, salaryFROM employeesWHERE salary = (SELECT MAX(salary) FROM employees);```通过 Oracle Select,用户可以方便地从数据库中获取所需的数据,并对数据进行各种操作。
oracle--单行函数和多行函数
oracle--单⾏函数和多⾏函数单⾏函数1、字符函数函数功能⽰例结果INITCAP (char)⾸字母⼤写initcap ('hello')HelloLOWER (char)转换为⼩写lower ('FUN')funUPPER (char)转换为⼤写upper ('sun')SUNLTRIM (char, set)左剪裁ltrim ('xyzadams', 'xyz')adamsRTRIM (char, set)右剪裁rtrim ('xyzadams', 'ams')xyzad TRANSLATE (char, from, to)按字符翻译translate ('jack', 'abcd', '1234')j13k REPLACE (char, search_str, replace_str)字符串替换replace ('jack and jue', 'j', 'bl')black and blue INSTR (char, substr[, pos])查找⼦串位置instr ('worldwide', 'd')5SUBSTR (char, pos, len)取⼦字符串substr ('abcdefg',3,2)cdCONCAT (char1, char2)连接字符串concat ('Hello', 'world')Helloworld2、数值函数函数功能⽰例结果ABS(n)取绝对值abs(-15)15CEIL(n )向上取整ceil(44.778)45SIN(n)正弦sin(1.571).999999979COS(n)余弦cos(0)1SIGN(n)取符号sign(-32)-1FLOOR(n)向下取整floor(100.2)100POWER(m,n )m的n次幂power(4,2)16MOD(m,n)取余数mod(10,3)1ROUND(m,n)四舍五⼊round(100.256,2)100.26TRUNC(m,n)截断trunk(100.256,2)100.25SQRT(n)平⽅根sqrt(4)23、⽇期函数函数功能⽰例结果MONTHS_BETWEEN返回两个⽇期间的⽉份months_between ('04-11⽉-05','11-1⽉-01')57.7741935ADD_MONTHS返回把⽉份数加到⽇期上的新⽇期add_months('06-2⽉-03',1)add_months('06-2⽉-03',-1)06-3⽉-0306-1⽉-03NEXT_DAY返回指定⽇期后的星期对应的新⽇期next_day('06-2⽉-03','星期⼀')10-2⽉-03LAST_DAY返回指定⽇期所在的⽉的最后⼀天last_day('06-2⽉-03')28-2⽉-03ROUND按指定格式对⽇期进⾏四舍五⼊round(to_date('13-2⽉-03'),'YEAR')round(to_date('13-2⽉-03'),'MONTH')round(to_date('13-2⽉-03'),'DAY')01-1⽉-0301-2⽉-0316-2⽉-03TRUNC对⽇期按指定⽅式进⾏截断trunc(to_date('06-2⽉-03'),'YEAR')trunc(to_date('06-2⽉-03'),'MONTH')trunc(to_date('06-2⽉-03'),'DAY')01-1⽉-0301-2⽉-0302-2⽉-034、转换函数⽇期格式元素含义YYYY、YY代表四位、两位数字的年份MM⽤数字表⽰的⽉份MON⽉份的缩写、对中⽂⽉份来说就是全称DD数字表⽰的⽇DY星期的缩写,对中⽂的星期来说就是全称HH24,HH1212⼩时或者24⼩时进制下的时间MI分钟数SS秒数数字格式元素含义9代表⼀位数字,如果该位没有数字则不进⾏显⽰,但对于⼩数点后⾯的部分仍会强制显⽰0代表⼀位数字,如果该位没有数字则强制显⽰0 $显⽰美元符号L显⽰本地货币符号.显⽰⼩数点,显⽰千分位符号其他函数nvl() nvl2() decode()函数功能NVL(EXP1, EXP2)如果exp1的值为null,则返回exp2的值,否则返回exp1的值NVL2(EXP1, EXP2, EXP3)如果exp1的值为null,则返回exp2的值,否则返回exp3的值DECODE(VALUE,IF1,THEN1, IF2,THEN2,……,ELSE) 如果value的值为if1,则返回then1的值,如果value的值为if2,则返回then2的值,……,否则返回else值多⾏函数单⾏函数学习--查询⼯作为SALESMAN,MANAGER并且⼯资⼤于2500的员⼯信息--1、使⽤⼩括号提升where筛选条件的执⾏优先级别--2、and的优先级别⾼于orselect * from empselect * from emp where job='SALESMAN' or job='MANAGER' and sal>2500 select * from emp where (job='SALESMAN' or job='MANAGER') and sal>2500 -----------------------------------------------------------------------------------------------------------使⽤函数单⾏函数多⾏函数转换函数其他函数--单⾏函数学习:不改变原始数据,只改变结果---1、字符函数select * from emp;select INITCAP(ename) from emp;--initcap函数将⾸字母⼤写select lower(ename)from emp;--lower 字母⼩写select replace(ename,'S','M') from emp;--replace 替换--2、数值函数--Math----伪表 dualselect * from dualselect abs(-3) 绝对值,ceil(3.1415926)向上取整,floor(3.1415926)向下取整,power(2,3)幂,round(3.4)四舍五⼊ from dual--3、⽇期函数select months_between('13-12⽉-2016','13-10⽉-2016') from dual--months_between两个⽇期之间的⽉份数多⾏函数学习多⾏函数:max: max(字段名) 返回此字段的最⼤值min:min(字段名) 返回此字段的最⼩值avg:avg(字段名) 返回平均值sum:sum(字段名)返回字段的和count:count--count(*),⽤来查询表中有多少条记录--count(字段名),⽤来查询某个字段有值的个数--count(distinct 字段名),可以先去除重复再计数。
跟我学Oracle从入门到精通培训教程——Oracle单行函数及应用
2、日期函数中的sysdate函数返回系统的当前日期 (1)语法格式示例 select sysdate from dual; 该示例查询系统时间,在有些日志操作中,常常需要 记录当前时间,使用sysdate这个函数是很方便的。 这个sysdate函数没有任何参数、并且返回的时间可 以精确到秒,但在显示时可能只显示到日,根据系统 的不同显示格式有所变化。 (2)用日期做算术运算的示例 SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS FROM employees WHERE department_id = 90;
2、数字函数中的trunc函数 (1)主要的功能 trunc函数截断指定位数的值,其用法与round函数类 似,只不过它的功能是对数据进行截取运算,只舍不入, 也就是把一个数据的指定位之后的数字全部舍去。 (2)语法格式 trunc(数值,保留n位) (3)应用示例
三、日期函数及应用
1、常用的日期函数 日期型函数的处理对象是日期型数据,处理的结果一 般也是日期型数据。 Oracle数据库中默认的日期格式为DD-MM-YY,但可以 在每次会话中使用如下命令定义自己需要的固定日期 的显示格式: Alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
一、字符函数及应用
2、字符函数中的LOWER函数 (1)主要的功能 实现把某个字符串转换成小写字符串。 (2)应用示例
3、字符函数中的UPPER函数 (1)主要的功能 UPPER函数的作用是实现把某个字符串转换成大 写字串。 (2)应用示例
二、数字函数及应用
1、数字函数中的ROUND函数 (1)主要的功能 ROUND函数实现四舍五入指定小数的值。 (2)语法格式 round(数值,保留n位小数); (3)应用示例
oracle单行函数(Oraclesinglefunction)
oracle单行函数(Oracle single function)0。
备份EMP表创建表myemp为SELECT * FROM emp=========================================================== ============================================================================================字符型函数=====================================================1。
低(C):将字符串全部转为小写史葛查询EMP表工作为的记录“职员”。
SELECT * FROM EMP在较低的(工作)= 'clerk”2。
上(C):将字符串全部转为大写选择上(ABC”)从双三.initcap(C):首字母大写选择initcap(ABC”)从双4。
concat(C1,C2):、连接C1 C2选择concat('我的名字','胡泽旺”)从双选择concat(':',员工编号empno)从EMP选择“员工编号:“| | EMPNO从EMP5。
substr(C1,N1,N2 [,]):取子串:从C1字符串中取从N1(N1从1开始)开始的N2个子串,如果没有N2、N1 N1的末尾开始到则表示从选择concat('http:/ /邮件”,substr('**************”,8))”邮箱地址”双6。
长度(C):去字符串C的长度选择长度('name胡泽旺”)从双7。
(C1、C2等[我],[,]):在C1 C2字符串里搜索子串从我位置开始第J次出现的位置(I,J默认为1)选择工具('**************”、“@”)从双选择工具(“上海自来水来自海上','自来,1,1)POS双选择工具(“上海自来水来自海上','自来,1,2)POS双选择工具(“上海自来水来自海上','自,1,1)POS双选择工具(“上海自来水来自海上','自,1,2)POS双选择工具(“上海自来水来自海上','自,4,2)POS双选择concat('http:/ /邮件”,substr('**************”,仪器('zwhcom @ 163 .com”、“@”)+ 1))”邮箱地址”双8。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 显示雇员编号、姓名、工资、以及工资增长15%后的整数值(以New_Salary作为列标题)。
SQL> select empno,ename,sal,trunc(1.15*sal,0) as New_Salary from emp; EMPNO ENAME SAL NEW_SALARY
----- ---------- --------- ----------
7369 SMITH 800.00 920
7499 ALLEN 1600.00 1840
7521 WARD 1250.00 1437
7566 JONES 2975.00 3421
7654 MARTIN 1250.00 1437
7698 BLAKE 2850.00 3277
7782 CLARK 2450.00 2817
7788 SCOTT 3000.00 3450
7839 KING 5000.00 5750
7844 TURNER 1500.00 1725
7876 ADAMS 1100.00 1265
7900 JAMES 950.00 1092
7902 FORD 3000.00 3450
7934 MILLER 1300.00 1495
14 rows selected
2增加一个列Increase显示New_Salary和sal之间的差值。
方法一
SQL> select empno,ename,sal,trunc(1.15*sal,0) as
New_Salary ,trunc(1.15*sal,0)-sal as Increase from emp;
方法二
子查询
select empno,ename,sal,trunc(1.15*sal,0)as New_Salary from emp;
主查询
select m.empno,m.ename,m.sal,m.New_Salary,m.New_Salary-m.sal as Increase
from(select empno,ename,sal,trunc(1.15*sal,0)as New_Salary from emp)m;
EMPNO ENAME SAL NEW_SALARY INCREASE
----- ---------- --------- ---------- ----------
7369 SMITH 800.00 920 120
7499 ALLEN 1600.00 1840 240
7521 WARD 1250.00 1437 187
7566 JONES 2975.00 3421 446
7654 MARTIN 1250.00 1437 187
7698 BLAKE 2850.00 3277 427
7782 CLARK 2450.00 2817 367
7788 SCOTT 3000.00 3450 450
7839 KING 5000.00 5750 750
7844 TURNER 1500.00 1725 225
7876 ADAMS 1100.00 1265 165
7900 JAMES 950.00 1092 142
7902 FORD 3000.00 3450 450
7934 MILLER 1300.00 1495 195
14ows selected
3 显示雇员姓名,并以*为指示符代表工资数额(列标题为EemployeeAndTheirSalary),一个指示符代表100,并以工资数额降序排列。
select ename,lpad('*',sal/100,'*')as EemployeeAndTheirSalary
from emp order by sal desc;
ENAME EEMPLOYEEANDTHEIRSALARY
----------
--------------------------------------------------------------------------------
KING **************************************************
FORD ******************************
SCOTT ******************************
JONES *****************************
BLAKE ****************************
CLARK ************************
ALLEN ****************
TURNER ***************
MILLER *************
WARD ************
MARTIN ************
ADAMS ***********
JAMES *********
SMITH ********
14 rows selected。