




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DUMP(w,x,y,z)【功能】返回数据类型、字节长度和在内部的存储位置.【参数】 w为各种类型的字符串(如字符型、数值型、日期型) x为返回位置用什么方式表达,可为:8,10,16或17,分别表示:8/10/16进制和字符型,默认为10。 y和z决定了内部参数位置【返回】类型 ,符号/指数位 数字1,数字2,数字3,.,数字20如:Typ=2 Len=7: 60,89,67,45,23,11,102SELECT DUMP(ABC,1016) FROM dual; 返回结果为:Typ=96 Len=3 CharacterSet=ZHS16GBK: 41,42,43 代码 数据类型0 对应 VARCHAR21 对应 NUMBER8 对应 LONG12 对应 DATE23 对应 RAW24 对应 LONG RAW69 对应 ROWID96 对应 CHAR106 对应 MSSLABEL各位的含义如下:1.类型: Number型,Type=2 (类型代码可以从Oracle的文档上查到)2.长度:指存储的字节数3.符号/指数位在存储上,Oracle对正数和负数分别进行存储转换:正数:加1存储(为了避免Null)负数:被101减,如果总长度小于21个字节,最后加一个102(是为了排序的需要)指数位换算:正数:指数=符号/指数位 - 193 (最高位为1是代表正数) 负数:指数=62 - 第一字节4.从开始是有效的数据位从开始是最高有效位,所存储的数值计算方法为:将下面计算的结果加起来:每个乘以100(指数-N) (N是有效位数的顺序位,第一个有效位的N=0)5、举例说明SQL select dump(123456.789) from dual;返回:Typ=2 Len=6: 195,13,35,57,79,91 : 195 - 193 = 2 13 - 1 = 12 *100(2-0) 120000 35 - 1 = 34 *100(2-1) 3400 57 - 1 = 56 *100(2-2) 56 79 - 1 = 78 *100(2-3) .78 91 - 1 = 90 *100(2-4) .009 123456.789 SQL select dump(-123456.789) from dual;返回:Typ=2 Len=7: 60,89,67,45,23,11,102算法: 62 - 60 = 2(最高位是0,代表为负数) 101 - 89 = 12 *100(2-0) 120000 101 - 67 = 34 *100(2-1) 3400 101 - 45 = 56 *100(2-2) 56 101 - 23 = 78 *100(2-3) .78 101 - 11 = 90 *100(2-4) .009 123456.789(-) 现在再考虑一下为什么在最后加102是为了排序的需要,-123456.789在数据库中实际存储为60,89,67,45,23,11 而-123456.78901在数据库中实际存储为 60,89,67,45,23,11,91 可见,如果不在最后加上102,在排序时会出现-123456.789-123456.78901的情况。greatest(exp1,exp2,exp3,expn)【功能】返回表达式列表中值最大的一个。如果表达式类型不同,会隐含转换为第一个表达式类型。【参数】exp1n,各类型表达式【返回】exp1类型【示例】 SELECT greatest(10,32,123,2006) FROM dual; SELECT greatest(kdnf,dfd,a,206) FROM dual;least(exp1,exp2,exp3,expn)【功能】返回表达式列表中值最小的一个。如果表达式类型不同,会隐含转换为第一个表达式类型。【参数】exp1n,各类型表达式【返回】exp1类型【示例】 SELECT least(10,32,123,2006) FROM dual;SELECT least(kdnf,dfd,a,206) FROM dual;【语法】NVL (expr1, expr2)【功能】若expr1为NULL,返回expr2;expr1不为NULL,返回expr1。注意两者的类型要一致 【语法】NVL2 (expr1, expr2, expr3) 【功能】expr1不为NULL,返回expr2;expr2为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型user【功能】返回当前会话对应的数据库用户名。【参数】无 【返回】字符型uid【功能】返回当前会话所对应的用户id号。【参数】无 【返回】字符型userenv(parameter)【功能】返回当前会话上下文属性。【参数】Parameter是参数,可以用以下参数代替:Isdba:若用户具有dba权限,则返回true,否则返回false.Language:返回当前会话对应的语言、地区和字符集。LANG:返回当前环境的语言的缩写Terminal:返回当前会话所在终端的操作系统标识符。Sessionid:返回正在使用的审计会话号.Client_info:返回用户会话信息,若没有则返回null.【返回】根据参数不同则类型不同【示例】Select userenv(isdba),userenv(Language),userenv(Terminal),userenv(Client_info) from dualdecode(条件,值1,翻译值1,值2,翻译值2,.值n,翻译值n,缺省值)【功能】根据条件返回相应值【参数】c1, c2, .,cn,字符型/数值型/日期型,必须类型相同或null注:值1n 不能为条件表达式,这种情况只能用case when then end解决含义解释:decode(条件,值1,翻译值1,值2,翻译值2,.值n,翻译值n,缺省值)该函数的含义如下:IF 条件=值1 THENRETURN(翻译值1)ELSIF 条件=值2 THENRETURN(翻译值2).ELSIF 条件=值n THENRETURN(翻译值n)ELSERETURN(缺省值)END IF或:when case 条件=值1 THENRETURN(翻译值1)ElseCase 条件=值2 THENRETURN(翻译值2).ElseCase 条件=值n THENRETURN(翻译值n)ELSERETURN(缺省值)END【示例】使用方法:1、比较大小select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; -取较小值sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1例如:变量1=10,变量2=20则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。2、表、视图结构转化现有一个商品销售表sale,表结构为:month char(6) -月份sellnumber(10,2)-月销售金额现有数据为:2000011000200002110020000312002000041300200005140020000615002000071600200101110020020212002003011300想要转化为以下结构的数据:yearchar(4) -年份month1number(10,2)-1月销售金额month2number(10,2)-2月销售金额month3number(10,2)-3月销售金额month4number(10,2)-4月销售金额month5number(10,2)-5月销售金额month6number(10,2)-6月销售金额month7number(10,2)-7月销售金额month8number(10,2)-8月销售金额month9number(10,2)-9月销售金额month10number(10,2)-10月销售金额month11number(10,2)-11月销售金额month12number(10,2)-12月销售金额结构转化的SQL语句为:create or replace viewv_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,month9,month10,month11,month12)asselectsubstrb(month,1,4),sum(decode(substrb(month,5,2),01,sell,0),sum(decode(substrb(month,5,2),02,sell,0),sum(decode(substrb(month,5,2),03,sell,0),sum(decode(substrb(month,5,2),04,sell,0),sum(decode(substrb(month,5,2),05,sell,0),sum(decode(substrb(month,5,2),06,sell,0),sum(decode(substrb(month,5,2),07,sell,0),sum(decode(substrb(month,5,2),08,sell,0),sum(decode(substrb(month,5,2),09,sell,0),sum(decode(substrb(month,5,2),10,sell,0),sum(decode(substrb(month,5,2),11,sell,0),sum(decode(substrb(month,5,2),12,sell,0)from salegroup by substrb(month,1,4);【语法】NULLIF (expr1, expr2)【功能】expr1和expr2相等返回NULL,不相等返回expr1COALESCE(c1, c2, .,cn)【功能】返回列表中第一个非空的表达式,如果所有表达式都为空值则返回1个空值【参数】c1, c2, .,cn,字符型/数值型/日期型,必须类型相同或null【返回】同参数类型【说明】从Oracle 9i版开始,COALESCE函数在很多情况下就成为替代CASE语句的一条捷径【示例】select COALESCE(null,3*5,44) hz from dual; 返回15select COALESCE(0,3*5,44) hz from dual; 返回0select COALESCE(null,AAA) hz from dual; 返回AAAselect COALESCE(,AAA) hz from dual; 返回AAArownum【功能】返回当前行号【参数】无 【返回】数值型BFILENAME(dir,file)【功能】函数返回一个空的BFILE位置值指示符,函数用于初始化BFILE变量或者是BFILE列。【参数】dir是一个directory类型的对象,file为一文件名。 insert into lobdemo(key,bfile_col) values (-1,biflename(utils,file1);VSIZE(X)【功能】返回X的大小(字节)数【参数】x select vsize(user),user from dual;返回:6 asdiedselect length(adfad合理) bytesLengthIs from dual -7select lengthb(adfad) bytesLengthIs from dual -5select lengthb(adfad合理) bytesLengthIs from dual -9select vsize(adfad合理) bytesLengthIs from dual -9select lengthc(adfad合理)bytesLengthIs from dual -7lengthb=vsizelengthc=lengthcase when then when then else end【功能】当: 时,返回对应 当不为条件表达式时,与函数decode()相同,decode(, ,)【参数】 默认为true (逻辑型) 类型要与类型一致,若为字符型,则也要为字符型【注意点】1、以CASE开头,以END结尾2、分支中WHEN 后跟条件,THEN为显示结果3、ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加4、END 后跟别名5、只返回第一个符合条件的值,剩下的when部分将会被自动忽略,得注意条件先后顺序【示例】建立环境:create table xqb(xqn number(1,0);insert into xqb xqn values(1);insert into xqb xqn values(2);insert into xqb xqn values(3);insert into xqb xqn values(4);insert into xqb xqn values(5);insert into xqb xqn values(6);insert into xqb xqn values(7);commit;查询结果:SELECT xqn, CASE WHEN xqn = 1 THEN 星期一 WHEN xqn = 2 THEN 星期二 WHEN xqn = 3 THEN 星期三 else 星期三以后 END 星期FROM xqb另类写法SELECT xqn, CASE xqn WHEN 1 THEN 星期一 WHEN 2 THEN 星期二 WHEN 3 THEN 星期三 else 星期三以后 END 星期FROM xqbdecode正确表达:SELECT xqn, decode(xqn,1,星期一,2,星期二,3,星期三,星期三以后) 星期FROM xqbdecode错误表达:SELECT xqn, decode(TRUE,xqn=1,星期一,xqn=2,星期二,xqn=3,星期三,星期三以后) 星期FROM xqb组合条件表达:SELECT xqn, CASE WHEN xqn = 1 THEN 星期一 WHEN xqn = 2 THEN 星期二 -条件同:not(xqn=1) and xqn=2 WHEN xqn = 3 THEN 星期三 -条件同:not(xqn=1 and xqn=2) and xqn set serverout on SQL begin 2 for i in 1.10 loop 3 dbms_output.put_line(round(dbms_random.value*100); 4 end loop; 5 end; 6 / 46 19 45 37 33 57 61 20 82 8 PL/SQL 过程已成功完成。 SQL 第二种value带有两个参数,第一个指下限,第二个指上限,将会生成下限到上限之间的数字,但不包含上限,“学无止境”兄说的就是第二种,如下: SQL begin 2 for i in 1.10 loop 3 dbms_output.put_line(trunc(dbms_random.value(1,101); 4 end loop; 5 end; 6 / 97 77 13 86 68 16 55 36 54 46 PL/SQL 过程已成功完成。 2. dbms_random.string 方法某些用户管理程序可能需要为用户创建随机的密码。使用10G下的dbms_random.string 可以实现这样的功能。例如:SQL select dbms_random.string(P,8 ) from dual ;DBMS_RANDOM.STRING(P,8)-3qMyf第一个参数的含义: u, U - returning string in uppercase alpha characters l, L - returning string in lowercase alpha characters a, A - returning string in mixed case alpha characters x, X - returning string in uppercase alpha-numericcharacters p, P - returning string in any printable characters.Otherwise the returning string is in uppercase alphacharacters.P 表示 printable,即字符串由任意可打印字符构成而第二个参数表示返回的字符串长度。3. dbms_random.random 方法 random返回的是BINARY_INTEGER类型值,产生一个任意大小的随机数 与dbms_random.value 的区别举例: Order By dbms_random.value;这条语句功能是实现记录的随机排序另外:dbms_random.value 和dbms_random.random 两者之间有什么区别?1。Order By dbms_random.value ,为结果集的每一行计算一个随机数,dbms_random.value 是结果集的一个列(虽然这个列并不在select list 中),然后根据该列排序,得到的顺序自然就是随机的啦。2。看看desc信息便知道vlue和random这两个函数的区别了,value返回的是number类型,并且返回的值介于1和0之间,而random
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年度自考专业(公共关系)练习题带答案详解(完整版)
- 2024-2025学年度电工通关考试题库带答案详解(典型题)
- 2024辅警招聘考试考前冲刺练习试题附参考答案详解(培优B卷)
- 2023年度计算机操作员真题及完整答案详解【有一套】
- 2025年新能源汽车智能化驾驶技术创新与市场前景报告
- 全市小学考试试题及答案
- 2025年劳动保障部颁布的《集体合同规定》
- 2025年湖南专升本《系统解剖学》复习备考题库300题(含答案)
- 2025-人工智能训练师-中级常见标准题150道(含答案)
- 5.3 基本经济制度 说课稿-2025-2026学年统编版道德与法治八年级下册
- 《医学中心肺癌诊疗》(讲课课件)
- 《肺炎克雷伯菌感染》课件
- 小学生科普课视错觉课件
- 电力安全微课堂
- 质量部长述职报告
- 无人机技术在农业领域的可行性分析报告
- 规模灵活资源广域接入的新型配电系统分层分群架构与规划技术研究
- 音乐心理学理论-洞察分析
- 法院报名登记表
- 上海市闵行区区管国企招聘笔试冲刺题2025
- 2024年度商业保理合同:保理公司与出口商之间的商业保理协议3篇
评论
0/150
提交评论