test_lesson03单行函数

test_lesson03单行函数
test_lesson03单行函数

测试

1.显示系统时间(注:日期+时间)

a)select to_char(sysdate,'yyyy-mm-dd hh:mi:ss')

b)from dual

2.查询员工号,姓名,工资,以及工资提高百分之20%后的结果(new

salary)

a)select employee_id,last_name,salary,salary*1.2

"new salary"

b)from employees

3.将员工的姓名按首字母排序,并写出姓名的长度(length)

a)select last_name,length(last_name)

b)from employees

c)order by last_name asc

4.查询各员工的姓名,并显示出各员工在公司工作的月份数

(worked_month)。

a)select

last_name,hire_date,round(months_between(sysdate

,hire_date),1)workded_month

b)from employees

5.查询员工的姓名,以及在公司工作的月份数(worked_month),并

按月份数降序排列

a)Select

last_name,hire_date,round(months_between(sysdate

,hire_date),1)workded_month

b)from employees

c)order by workded_month desc

6.做一个查询,产生下面的结果

earns monthly but wants

select last_name||' earns '||

to_char(salary,'$999999')||' monthly,but wants

'||to_char(3*salary,'$999999')"Dream Salary"

from employees

7.使用decode函数,按照下面的条件:

job grade

AD_PRES A

ST_MAN B

IT_PROG C

SA_REP D

ST_CLERK E

产生下面的结果

select last_name"Last_name",job_id

"Job_id",decode(job_id,'AD_PRES','A','ST_MAN','B',

'IT_PROG','C','SA_REP','D','ST_CLERK','E')"Grade" from employees

8.将第7题的查询用case函数再写一遍。

a)select last_name"Last_name",job_id"Job_id",case

job_id when'AD_PRES'then'A'

b)when'ST_MAN'then'B'

c)when'IT_PROG'then'C'

d)when'SA_REP'then'D'

e)when'ST_CLERK'then'E'end"Grade"

f)from employees

【IT专家】MySQL高级查询函数(单行函数)

本文由我司收集整编,推荐下载,如有疑问,请与我司联系 MySQL高级查询函数(单行函数) 2017/03/20 737 函数的分类:1,单行函数:对每一条记录输入值进行计算,得到相应的计算结果,返回给用户,也就是说,每条记录作为一个输入参数,经过函数计算得到每条记录的计算结果。2,多行函数:对多条记录输入值进行计算,得到多条记录对应的单个结果。 ?单行函数: ?①:字符串函数(用户处理单行的字符数据,比如大小写转换,字符串截取,拼装等) ?a.LOWER/UPPER(LOWER(str):返回字符串str变为小写字母的字符 串.UPPER(str):返回字符串str变为大写字母的字符串) SELECT UPPER(name) FROM student; //全部大写SELECT LOWER(name) FROM student; //全部小写b.CONCAT: CONCAT(str1,str2,...): 1,返回结果为连接参数产生的字符串。 2,如有任何一个参数为NULL ,则返回值为NULL 3,允许有一个或多个参数 SELECT name,age, CONCAT(name,’-’,age) FROM student;运行的结果为: ?c.INSERT:把指定(位置,长度)的子字符串替换成目标字符串 ?格式:INSERT(str,pos,len,newstr) 参数:str:(源字符串) pos:(开始插入的位置,索引从1开始) len:(替换字符串的长度) newstr:(待插入的字符串) 1,返回字符串str, 其子字符串起始于pos 位置和长度被字符串newstr取代的len 字符。2,如果pos 超过字符串长度,则返回值为原始字符串。3,假如len的长度大于其它字符串的长度,则从位置pos开始替换。4,若任何一个参数为null,则返回值为NULL示例:替换用户名名的部分字符,规则如下:保留用户名前2位,中间3位使用*代替,如果姓名还有多余的字符,保留 SELECT INSERT(name,2,3,’***’) FROM student;运行的结果为: ?d.①LENGTH:字符串所占用的字节数

SQL练习

SQL练习 基本select语句: 1查询emp表的所有数据 2.查询emp表中ename,job,sal几列,其中sal列在结果集中以别名salary查询SQL>select ename,job,sal salary from emp; 3.查询emp表中deptno,ename,年工资,并将年工资命名别名total salary SQL>select deptno,ename,sal*12"total salary"from emp; 4.查看emp表的结构 5.查询emp表中雇员号,雇员的名字,工作岗位,入职日期,并将查询保存为脚本,脚本名字c.sql 6.运行c.sql 7.查询员工表中部门编号,重复的部门编号只查询一次 SQL>select distinct deptno from emp; 8.在结果集中雇员名和工作岗位相连用"空格逗号空格"分隔,并将列头查询为Employee and Title ???? 限制和排列数据 1.查询收入大于2850的雇员名称和工资 SQL>select ename,sal from emp where sal>2850; 2.查询雇员编号7566的雇员名字和所在部门号 SQL>select 2ename,deptno from emp where empno=7566; 3.查询BLAKE的工资 略 4.查询收入在2000和5000之间的人 SQL>select ename from emp where sal between2000and5000; 5.查询收入为1000,2000,3000,5000的人 SQL>select ename from emp where sal in(1000,2000,3000,5000);

oracle数据类型及其隐式转换

备注:转换时要根据给定的string设定正确的格式掩码,否则 Ora_01840:input value is not long enough for date format. Ora_01862:the numeric value does not match the length of the format item. 3) to_number 字符值->数字值 语法:to_number (string,[format mask],[nls_parameters]) 参数:string 待转换的字符值 format mask:可选参数 格式掩码同to_char转换为number时相同。 备注:如果使用较短的格式掩码就会返回错误。 例如: to_number(123.56,’999.9’)返回错误。 在oracle中,如果不同的数据类型之间关联,如果不显式转换数据,则它会根据以下规则对数据进行隐式转换 1) 对于INSERT和UPDATE操作,oracle会把插入值或者更新值隐式转换为字段的数据类型。假如id列的数据类型为number update t set id='1'; -> 相当于update t set id=to_number('1'); insert into t(id) values('1') -> insert into t values(to_number('1')); 2) 对于SELECT语句,oracle会把字段的数据类型隐式转换为变量的数据类型。 如假设id列的数据类型为varchar2 select * from t where id=1; -> select * from t where to_number(id)=1; 但如果id列的数据类型为number,则 select * from t where id='1'; -> select * from t where id=to_number('1');(参考下文) 3) 当比较一个字符型和数值型的值时,oracle会把字符型的值隐式转换为数值型。 如假设id列的数据类型为number select * from t where id='1'; -> select * from t where id=to_number('1');

Oracle笔试题及答案

一、选择题(每题1分) 1.Oracle发出下列select语句: SQL> select e.empno, e.ename, d.loc 2 from emp e, dept d 3 where e.deptno = d.deptno 4 and substr(e.ename, 1, 1) = ‘S’; 下列哪个语句是Oracle数据库中可用的ANSI兼容等价语句? A.select empno, ename, loc from emp join dept on emp.deptno = dept.deptno where substr(emp.ename, 1, 1) = ‘S’; B.select empno, ename, loc from emp, dept on emp.deptno = dept.deptno where substr(emp.ename, 1, 1) = ‘S’; C.select empno, ename, loc from emp join dept where emp.deptno = dept.deptno and substr(emp.ename, 1, 1) = ‘S’; D.select empno, ename, loc from emp left join dept on emp.deptno = dept.deptno and substr(emp.ename, 1, 1) = ‘S’; 2.你要对操纵Oracle数据库中的数据。下列哪个选项表示Oracle中select语句的功能, 并且不需要使用子查询? A.可以用select语句改变Oracle中的数据 B.可以用select语句删除Oracle 中的数据 C.可以用select语句和另一个表的内容生成一个表 D.可以用select语句对表截断 3.Oracle数据库中发出一个查询。下列哪个选项不能查询对用户定义静态表达式执行数学 运算时的查询组件? A.列子句 B.表子句 C.DUAL表 D.where子句 4.你要操纵Oracle数据,下列哪个不是SQL命令? A.select * from dual; B.set define C.update emp set ename = 6543 where ename = ‘SMITHERS’; D.create table employees(empid varchar2(10) primary key); 5.你要在Oracle中定义SQL查询。下列哪个数据库对象不能直接从select语句中引用?A.表 B.序列 C.索引 D.视图 6.你要根据PRODUCT_NAME列从PROFITS表查询中过滤返回的数据。下列哪个子句包含相 应过滤条件的引用? A.select B.from C.where D.having 7.下列代码显示了PROFITS表输出的局部: PRODUCT_NAME PRODUCT_TYPE QTR_END_DATE PROFIT ------------ ------------ ------------ ------------- BARNEY DOLL TOY 31-MAR-2001 6575430.30 GAS GRILL APP 31-MAR-2001 1234023.88

oracle函数列表

PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序。在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数; 组函数 本文将讨论如何利用单行函数以及使用规则。SQL中的单行函数 SQL和PL/SQL中自带很多类型的函数,有字符、数字、日期、转换、和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数。这些函数均可用于SELECT,WHERE、ORDER BY等子句中,例如下面的例子中就包含了TO_CHAR,UPPER,SOUNDEX等单行函数。 SELECT ename,TO_CHAR(hiredate,'day,DD-Mon-YYYY')FROM empWhere UPPER(ename) Like 'AL%'ORDER BY SOUNDEX(ename) 单行函数也可以在其他语句中使用,如update的SET子句,INSERT的V ALUES子句,DELET的WHERE子句,认证考试特别注意在SELECT语句中使用这些函数,所以我们的注意力也集中在SELECT语句中。 NULL和单行函数 在如何理解NULL上开始是很困难的,就算是一个很有经验的人依然对此感到困惑。NULL值表示一个未知数据或者一个空值,算术操作符的任何一个操作数为NULL值,结果均为提个NULL值,这个规则也适合很多函数,只有CONCA T,DECODE,DUMP,NVL,REPLACE在调用了NULL参数时能够返回非NULL值。在这些中NVL函数时最重要的,因为他能直接处理NULL值,NVL有两个参数:NVL(x1,x2),x1和x2都式表达式,当x1为null时返回X2,否则返回x1。 下面我们看看emp数据表它包含了薪水、奖金两项,需要计算总的补偿 column name emp_id salary bonuskey type pk nulls/unique nn,u nnfk table datatype number number numberlength 11.2 11.2 不是简单的将薪水和奖金加起来就可以了,如果某一行是null值那么结果就将是null,比如下面的例子: update empset salary=(salary+bonus)*1.1 这个语句中,雇员的工资和奖金都将更新为一个新的值,但是如果没有奖金,即salary + null,那么就会得出错误的结论,这个时候就要使用nvl函数来排除null值的影响。 所以正确的语句是: update empset salary=(salary+nvl(bonus,0)*1.1 单行字符串函数 单行字符串函数用于操作字符串数据,他们大多数有一个或多个参数,其中绝大多数返回字符串 ASCII()

Oracle SQL练习题(2)

Oracle SQL练习题(2) 注:这些查询题目涵盖了各种单行函数的基本查询的技术,请大家认真做,做好了的查询语句之后,有兴趣的同学可以再创建相应的视图和存储过程。下面的查询练习题是基于Oracle 10g数据库中的scott用户下的表来进行练习的。 首先给出scott用户中各个表的表结构 第一:emp(员工信息表),如图1所示 emp表中各个字段的介绍如下: (1)empno:员工编号 (2)ename:员工姓名 (3)job:职位 (4)mgr:上级领导编号 (5)hiredate:雇佣日期 (6)sal:薪水 (7)comm:佣金 (8)deptno:部门编号 第二:dept(部门信息表),如图2所示 dept表中各个字段的介绍如下: (1)deptno:部门编号 (2)dname:部门名称 (3)loc:部门所在地 练习: 1.选择部门30中的所有员工? 2.列出所有办事员(CLERK)的姓名,编号和部门编号? 3.找出佣金高于薪金的员工?

4.找出佣金高于薪金的60%的员工? 5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料? 6.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又 不是办事员但其薪金大于或等于2000的所有员工的详细资料? 7.找出收取佣金的员工的不同工作? 8.找出不收取佣金或收取的佣金低于100的员工? 9.找出各月倒数第3天受雇的所有员工? 10.找出早于12年前受雇的员工? 11.以首字母大写的方式显示所有员工的姓名? 12.显示正好为5个字符的员工的姓名? 13.显示不带有"R"的员工的姓名? 14.显示所有员工姓名的前三个字符? 15.显示所有员工的姓名,用a替换所有"A"? 16.显示满10年服务年限的员工的姓名和受雇日期? 17.显示员工的详细资料,按姓名排序? 18.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面? 19.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序? 20.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将 最早年份的员工排在最前面? 21.显示在一个月为30天的情况所有员工的日薪金,忽略余数? 22.找出在(任何年份的)2月受聘的所有员工? 23.对于每个员工,显示其加入公司的天数? 24.显示姓名字段的任何位置包含"A"的所有员工的姓名? 25.以年月日的方式显示所有员工的服务年限? 26.列出各种工作职位的最低工资,且显示最低工资大于1500的记录 27.列出所有雇员的雇员名称、部门名称和工资 28.列出从事同一种工作但属于不同部门的雇员的员工信息 29.列出按年薪排序的所有雇员的年薪 30.列出至少有一个员工的所有部门 31.列出薪金比"SMITH"多的所有员工 32.列出薪金高于公司平均水平的所有员工 33.列出与“SCOTT”从事相同工作的所有员工 34.列出某些员工的姓名和薪金,条件是他们的薪金等于部门30中任何一个员工的薪金 35.列出所有员工的姓名及其直接上级的姓名 36.列出各个部门的MANAGER(经理)的最低薪金

Oracle试题

模块一 SQL(DQL) Part I(第一天) 01. 查询员工表所有数据, 并说明使用*的缺点 答: select * from emp; 使用*的缺点有 a) 查询出了不必要的列 b) 效率上不如直接指定列名 02. 查询职位(JOB)为'PRESIDENT'的员工的工资 答: select * from emp where job = 'PRESIDENT'; 03. 查询佣金(COMM)为0 或为NULL 的员工信息 答:重点是理解0 与null 的区别 select * from emp where comm = 0 or comm is null; 04. 查询入职日期在1981-5-1 到1981-12-31 之间的所有员工信息 答:通过此题掌握常用日期函数 select * from emp where hiredate between to_date('1981-5-1','yyyy-mm-dd') and to_date('1981-12-31','yyyy-mm-dd'); 05. 查询所有名字长度为4 的员工的员工编号,姓名 答: select * from emp where length(ename) = 4;

06. 显示10 号部门的所有经理('MANAGER')和20 号部门的所有职员('CLERK')的详细信息 答: select * from emp where deptno = 10 and job = 'MANAGER' or deptno = 20 and job ='CLERK'; 07. 显示姓名中没有'L'字的员工的详细信息或含有'SM'字的员工信息 答:考察知识点模糊查询 select * from emp where ename not like '%L%' or ename like '%SM%'; 08. 显示各个部门经理('MANAGER')的工资 答: select sal from emp where job = 'MANAGER'; 09. 显示佣金(COMM)收入比工资(SAL)高的员工的详细信息 答: select * from emp where comm > sal; 10. 把hiredate 列看做是员工的生日,求本月过生日的员工(考察知识点:单行函数) 答: select * from emp where to_char(hiredate, 'mm') = to_char(sysdate , 'mm'); 11. 把hiredate 列看做是员工的生日,求下月过生日的员工(考察知识点:单行函数) 答: select * from emp where to_char(hiredate, 'mm') = to_char(add_months(sysdate,1) , 'mm'); 12. 求1982 年入职的员工(考察知识点:单行函数) 答: select * from emp where to_char(hiredate,'yyyy') = '1982'; 13. 求1981 年下半年入职的员工(考察知识点:单行函数) 答: select * from emp where hiredate

PLSQL函数

plsql常用方法 在SQLPLUS下,实现中-英字符集转换 alter session set nls_language='AMERICAN'; alter session set nls_language='SIMPLIFIED CHINESE'; 主要知识点: 一、有关表的操作 1)建表 create table test as select * from dept; --从已知表复制数据和结构 create table test as select * from dept where 1=2; --从已知表复制结构但不包括数据 2)插入数据: insert into test select * from dept; 二、运算符 算术运算符:+ - * / 可以在select 语句中使用 连接运算符:|| select deptno|| dname from dept; 比较运算符:> >= = != < <= like between is null in 逻辑运算符:not and or 集合运算符:intersect ,union,union all,minus 要求:对应集合的列数和数据类型相同 查询中不能包含long 列 列的标签是第一个集合的标签 使用order by时,必须使用位置序号,不能使用列名 例:集合运算符的使用: intersect ,union,union all,minus select * from emp intersect select * from emp where deptno=10 ; select * from emp minus select * from emp where deptno=10; select * from emp where deptno=10 union select * from emp where deptno in (10,20); --不包括重复行 select * from emp where deptno=10 union all select * from emp where deptno in (10,20); --包括重复行三,常用ORACLE 函数 sysdate为系统日期dual为虚表 一)日期函数[重点掌握前四个日期函数] 1,add_months[返回日期加(减)指定月份后(前)的日期] select sysdate S1,add_months(sysdate,10) S2, add_months(sysdate,5) S3 from dual; 2,last_day [返回该月最后一天的日期] select last_day(sysdate) from dual; 3,months_between[返回日期之间的月份数] select sysdate S1, months_between('1-4月-04',sysdate) S2, months_between('1-4月-04','1-2月-04') S3 from dual 4,next_day(d,day): 返回下个星期的日期,day为1-7或星期日-星期六,1表示星期日 select sysdate S1,next_day(sysdate,1) S2, next_day(sysdate,'星期日') S3 FROM DUAL 5,round[舍入到最接近的日期](day:舍入到最接近的星期日) select sysdate S1,

Oracle内置函数、高级查询、事务

【作业】 单行函数 1.显示系统时间 2.查询员工表emp中员工号empno,姓名ename,工资sal,以及工资提高百分之20%后的 结果 3. 4.查询各员工的姓名ename,并显示出各员工在公司工作的月份数(即:与当前日期比较, 该员工已经工作了几个月)。 5.查询员工的姓名和工资,按下面的形式显示 6.查询员工的姓名ename和工资数sal,条件限定为工资数必须大于1200,并对查询结果 7.做一个查询,产生下面的结果 8.做一个查询,产生类似下面的结果

9.使用decode函数,按照下面的条件: job grade PRESIDENT A MANAGER B ANALYST C SALESMAN D CLERK E 产生类似下面形式的结果 DECODE(value, if1, then1, if2,then2, if3,then3, . . . else ) Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。当每个value 值被测试,如果value的值为if1,Decode 函数的结果是then1;如果value等于if2,Decode函数结果是then2;等等。事实上,可以给出多个if/then 配对。如果value 结果不等于给出的任何配对时,Decode 结果就返回else 。 需要注意的是,这里的if、then及else 都可以是函数或计算表达式 12.将英文小写字母的ascii码返回。 14.将“上海世博会”替换成“上海世界博览会”。 15.将字符串“iljfljsaiejvnvlaljlovejldjfeijfyou”截取成i love you的字符串。

单行函数英文测试题

Review Questions 1. You want to display each project’s start date as the day, week, number, and year. Which statement will give output like the following? Tuesday Week 23, 2008 A. SELECT proj_id, TO_CHAR(start_date, ‘DOW Week WOY YYYY’) FROM projects; B. SELECT proj_id, TO_CHAR(start_date,’Day’||’ Week’||’ WOY, YYYY’) FROM projects; C. SELECT proj_id, TO_CHAR(start_date, ‘Day” Week” WW, YYYY’) FROM projects; D. SELECT proj_id, TO_CHAR(start_date, ‘Day Week# , YYYY’) FROM projects; E. You can’t calcu late week numbers with Oracle. 2. What will the following statement return? SELECT last_name, first_name, start_date FROM employees WHERE hire_date < TRUNC(SYSDATE) – 5; A. Employees hired within the past five hours B. Employees hired within the past five days C. Employees hired more than five hours ago D. Employees hired more than five days ago 3. Which assertion about the following statements is most true? SELECT name, region_code||phone_number FROM customers; SELECT name, CONCAT(region_code,phone_number) FROM customers; A. If REGION_CODE is NULL, the first statement will not include that customer’s PHONE_NUMBER. B. If REGION_CODE is NULL, the second statement will not include that customer’s PHONE_NUMBER. C. Both statements will return the same data. D. The second statement will raise an error if REGION_CODE is NULL for any customer. 4. Which single-row function could you use to return a specific portion of a character string? A. INSTR B. SUBSTR

oracle_sql单行函数练习(含答案)

oracle_sql单行函数练习(含答案) https://www.360docs.net/doc/1715245528.html,整理 2012-12-3 Oracle单行函数的实例练习,基于Oracle自带数据库,用户名分别为hr(主要)和scott。 基本上都做出来了,但还有一道关于人民币转数字的还没有做出来,有知道的留言下哦, 其他地方有错误的请指正。 Sql代码 1./*1、将字符串 'abc' 以10位长度输出,不足10位用#补足(分别从左边 和右边补足) 2.2、将字符串' abc ewr 3245 4 '去除两头空格输出 3.3、将字符串'abc 234 abc abc def abc' 中'abc' 替换为 '###' 输 出 4.4、将数字7433453.52638263 四舍五入后输出 5.5、将数字743583.345234 中十位数之后数字全部忽略输出 6.*/ 7. 8.--1、将字符串 'abc' 以10位长度输出,不足10位用#补足(分别从左边 和右边补足) 9.SELECT lpad('abc',10,'#') FROM dual; 10.SELECT rpad('abc',10,'#') FROM dual; 11.--2、将字符串' abc ewr 3245 4 '去除两头空格输出 12.SELECT trim(' abc ewr 3245 4 ') FROM dual; 13.--3、将字符串'abc 234 abc abc def abc' 中'abc' 替换为 '###' 输 出 14.SELECT replace('abc 234 abc abc def abc','abc','###') FROM dual ; 15.--4、将数字7433453.52638263 四舍五入后输出 16.SELECT ROUND(7433453.52638263) FROM dual; 17.--5、将数字743583.345234 中十位数之后数字全部忽略输出 18.SELECT round(743583.345234,-1) from DUAL; 19. 20./* 21.6、查询hr方案中employees表,将所有员工工资上涨 11.173% 后,四 舍五入到十位输出

2014年信息技术考核数据库试题

模块一SQL(DQL) l 基本SQL 查询 l 运算符与函数 l 子查询 l 连接查询 建表语句emp.sql Part I(第一天) 01. 查询员工表所有数据, 并说明使用*的缺点 答: select * from emp; 使用*的缺点有 a) 查询出了不必要的列 b) 效率上不如直接指定列名 02. 查询职位(JOB)为'PRESIDENT'的员工的工资 答: select * from emp where job = 'PRESIDENT'; 03. 查询佣金(COMM)为0 或为NULL 的员工信息 答:重点是理解0 与null 的区别 select * from emp where comm = 0 or comm is null; 04. 查询入职日期在1981-5-1 到1981-12-31 之间的所有员工信息 答:通过此题掌握常用日期函数 select * from emp where hiredate between to_date('1981-5-1','yyyy-mm-dd') and to_date('1981-12-31','yyyy-mm-dd'); 05. 查询所有名字长度为4 的员工的员工编号,姓名 答: select * from emp where length(ename) = 4; 06. 显示10 号部门的所有经理('MANAGER')和20 号部门的所有职员('CLERK')的详细信息答: select * from emp where deptno = 10 and job = 'MANAGER' or deptno = 20 and job ='CLERK'; 07. 显示姓名中没有'L'字的员工的详细信息或含有'SM'字的员工信息 答:考察知识点模糊查询 select * from emp where ename not like '%L%' or ename like '%SM%'; 08. 显示各个部门经理('MANAGER')的工资 答: select sal from emp where job = 'MANAGER'; 09. 显示佣金(COMM)收入比工资(SAL)高的员工的详细信息 答: select * from emp where comm > sal; 10. 把hiredate 列看做是员工的生日,求本月过生日的员工(考察知识点:单行函数) 答: select * from emp where to_char(hiredate, 'mm') = to_char(sysdate , 'mm');

OraleDB使用单行函数定制输出

? 描述SQL 提供的各类函数 ? 在SELECT 语句中使用字符、数字和日期函数 ?SQL 函数 函数是SQL 的一项非常强大的功能,可用于执行以下操作: ? 执行数据计算 ? 修改单个数据项 ? 处理成组行的输出 ? 设置日期和数字的显示格式 ? 转换列数据类型 SQL 函数有时接受多个参数,但始终返回一个值。 ?两种类型的SQL 函数 有两种类型的函数: ? 单行函数 ? 多行函数 单行函数 这些函数仅对单行进行处理,为每行返回一个结果。单行函数具有多种不同类型。介绍以下几种函数: ? 字符 ? 数字 ? 日期 ? 转换 ? 常规 多行函数 这些函数可以处理成组的行,为每组行返回一个结果。 ?单行函数 单行函数:

? 处理数据项 ? 接受参数并返回一个值 ? 对每个返回行进行处理 ? 为每行返回一个结果 ? 可能会修改数据类型 ? 可以嵌套 ? 接受参数,这些参数可以是列或表达式 function_name [(arg1, arg2,...)] 在该语法中: function_name:是函数的名称 arg1, arg2:是函数使用的任意参数,可以是列名称或表达式。 单行函数用于处理数据项。其接受一个或多个参数,并对查询返回的每一行返回一个值。参数可以是下列对象之一: ? 用户提供的常量 ? 变量值 ? 列名 ? 表达式 单行函数的特点包括: ? 对查询中返回的每一行进行处理 ? 为每行返回一个结果 ? 可能会返回一个与所引用类型不同的数据值 ? 可能需要一个或多个参数 ? 可用于SELECT 、WHERE和ORDER BY 子句中;也可以嵌套。 将介绍以下单行函数: ? 字符函数:接受字符输入,可以返回字符值和数字值 ? 数字函数:接受数字输入,可以返回数字值 ? 日期函数:对DATE 数据类型的值进行处理(所有日期函数都会返回一个DATE 数据类型的值,只有MONTHS_BETWEEN 函数返回一个数字。) ? 转换函数:将值从一种数据类型转换为另一种数据类型 ? 常规函数: - NVL

函数是一种有零个或多个参数并且有一个返回值的程序

函数是一种有零个或多个参数并且有一个返回值的程序函数是一种有零个或多个参数并且有一个返回值的程序。在中内建了一系列函SQLOracle数,这些函数都可被称为或语句,函数主要分为两大类:单行函数、组函数。SQLPL/SQL 、中的单行函数1SQL 和中自带很多类型的函数,有字符、数字、日期、转换、和混合型等多种SQLPL/SQL 函数用于处理单行数据,因此这些都可被统称为单行函数。这些函数均可用于、等子句中,例如下面的例子中就包含了SELECT,WHEREORDER BY 等单行函数。TO_CHAR,UPPER,SOUNDEX SELECT ename,TO_CHAR(hiredate,'day,DD-Mon-YYYY')FROM emp Where UPPER(ename) Like 'AL%'ORDER BY SOUNDEX(ename) 单行函数也可以在其他语句中使用,如的子句,的子句,updateSETINSERTVALUES 的子句认证考试特别注意在语句中使用这些函数,所以我们的注DELETWHERE,SELECT 意力也集中在语句中。SELECT 和单行函数NULL 在如何理解上开始是很困难的,就算是一个很有经验的人依然对此感到困惑。NULL 值表示一个未知数据或者一个空值,算术操作符的任何一个操作数为值,结NULLNULL果均为提个值这个规则也适合很多函数,只有NULL,

在调用了参数时能够返回非值。CONCAT,DECODE,DUMP,NVL,REPLACENULLNULL在这些中函数时最重要的,因为他能直接处理值,有两个参数:NVLNULLNVL 和都是表达式,当为时返回否则返回。NVL(x1,x2),x1x2x1nullX2,x1 下面我们看看数据表它包含了薪水、奖金两项,需要计算总的补偿emp column name emp_id salary bonuskey type pk nulls/unique nn,u nnfk table datatype number number numberlength 11.2 11.2 不是简单的将薪水和奖金加起来就可以了,如果某一行是值那么结果就将是,nullnull比如下面的例子: update emp set salary=(salary+bonus)*1.1 这个语句中,雇员的工资和奖金都将更新为一个新的值,但是如果没有奖金,即 salary 那么就会得出错误的结论,这个时候就要使用函数来排除值的影响。+ null,nvlnull 所以正确的语句是: update emp set salary=(salary+nvl(bonus,0)*1.1 单行字符串函数 单行字符串函数用于操作字符串数据,他们大多数有一个或多个参数,其中绝大多数返回字符串 ASCII() 是一字符串,返回第一个字母的码,他的逆函数是c1c1ASCIICHR() SELECT ASCII('A') BIG_A,ASCII('z') BIG_z FROM empBIG_A BIG_z65 122 ,,CHR(i)[NCHAR_CS] 是一个数字,函数返回十进制表示的字符i select CHR(65),CHR(122),CHR(223) FROM empCHR65 CHR122 CHR223A z B CONCAT(,)

Sql语句学习笔记

先登陆服务器:telnet 192.168.0.23 公帐号:openlab-open123 tarena-tarena 再进入SQL:sqlplus sd0807/sd0807 帐号:sd0807-密码同样公帐号:openlab-open123 设置环境变量: ORACLE_SID=oral10g\ --变局部变量 export ORACLE_SID --变全局变量 unset ORACLE_SID --卸载环境变量 ORACLE_HOME=... --安装路径;直接用一句语句也可以,如下 export ORACLE_HOME=/oracledata/.../bin: 一、注意事项: 大小写不敏感,即不区分大小写。提倡关键字大写,便于阅读和调式。 “!”在SQL环境下执行Unix命令。 SQL语句是由简单的英语单词构成;这些英语单词称为关键字/保留字,不做它用。SQL 由多个关键字构成。 SQL语句由子句构成,有些子句是必须的,有些是可选的。 在处理SQL语句时,其中所有的空格都被忽略(空格只用来分开单词,连续多个空格当一个用)。 SQL语句可以在一行上写出,建议多行写出,便于阅读和调试。 多条SQL语句必须以分号分隔。多数DBMS不需要在单条SQL语句后加分号,但特定的DBMS可能必须在单条SQL语句后加分号。 SQL语句的最后一句要以“;”号结束 二、写子句顺序 Select column,group_function From table [Where condition] [Group by group_by_expression] [Having group_condition] …… [Order by column]; --最后 三、常用简单语句: clear screen:清屏 edit:编辑刚才的一句。 desc/describe:(列出所有列名称) 用法:DESCRIBE [schema.]object[@db_link] dual:亚表,临时用。如:desc dual;/from dual; rollback:回溯,回溯到上次操作前的状态,把这次事务操作作废,只有一次(DDL和DCL 语句会自动提交,不能回溯)。 可以用commit语句提交,这样就回溯不回了。 set pause on\off :设置分屏(设置不分屏) set pause "please put an enter key" 且set pause on:设置带有提示的分屏

Mysql查询语句大全

Mysql 查询语句大全 \1.两表之间的查询,例如:查询员工表中部门号与部门表中部门号相等 select * from tb_emp ,tb_dept where tb_emp.deptno=tb_dept.deptno; (这是同时显示两张表中相等的depton 所有字段)(tb_emp ,tb_dept这都是表名) 2.select tb_e.deptno from tb_e, tb_d where tb_e.deptno=tb_d.deptno; (这是只显示员工表中的tb_e.deptno,并且条件是员工表中部门号与部门表中部门号相等)3.给字段取别名 select product_price*12 totsl_product_price from productinfo; 等价select product_price*12 from productinfo; 也可以这样写select product_price*12 " totsl product_price" from productinfo; 有特殊的字符时用双引号的方法,(特殊字符是:中文,日文,分号等)(totsl product_price 是product_price*12) ****** 0 和空还有空格不是一个概念 例如: select * from emp where description is null; select * from emp where description =0; select * from emp where description ='空格'; 查询的结果都市不一样的。 distinct 关键字可以查询结果中清除重复的行,他的作用范围是后面的所有字段的组合; 例如: select distinct deptno ,deptname from emp where deptno=23; totsl_product_price是product_price的别名; select ename, sal*12 as '年薪'from emp; 别名的作用是让查询出来的结果可以让别人(外行)看了一目了然的作用 上面是针对产品价格计算出总金额,价格*12,也就是对字段值进行加减乘除, *****任何含有空值的表达式计算后的值都是空值。(空值+20=空值,等等) 不等值查询(mysql两者都支持) select * from productinfo where product_id!=33; oracl的不等值查询 select * from productinfo where product_id<>'33'; 小于查询 select * from productinfo where product_id<'33'; 大于查询 select * from productinfo where product_id>'33'; 等于查询 select * from productinfo where product_id='33'; 在一定值范围内查询例如1000--5000的查询 select ename, sal as '月薪'from emp where sal>=1000 and sal<=5000; 在两个值之间的查询between...... and (包含最小值和最大值) select ename, sal as '月薪'from emp where sal between 1000 and 5000; in 查询在什么里面 示例:在emp表中查询部门编号为25 25 20 这三个值中的某些字段

相关文档
最新文档