1、Oracle 从入门到精通一、SQL.81.1、基本概念:81.2、数据库安全:81.3、基本的SQL SELECT 句.81.4、SELECT句91、语法:92、SQL语句说明:.93、数字和日期都可以使用数学运算符建立表达式。.94、定义空(NULL)值.95、别名96、spool +路径.107、连接操作符: | .108、文本字符串.109、DISTINCT 101.5、SQLPLUS 与 SQL 的系.101、SQLPLUS命令的功能: .102、查询 SQLPLUS 命令.103、SQLPLUSW 在 WINDOWS 下运行的分析器。.104、SQLPLUS 命令: . 111.6
2、、单行数121、character字符类型函数: .122、number数字类型函数.153、时间类型函数:(date) .151.7、嵌套函数:.211. 通用函数:.212. 条件表达式:.243. 从多表中显示数据: .251.8、用字函数产生的计.261.9、子查询:282.0、替换变量:291.资源来自网络,仅供学习! Oracle 从入门到精通第 9 页,共 106 页6、spool +路径保存命令(将显示保存)7、连接操作符: |select lastname | work in | department_id from tablename;select last_name |
3、s salary is | salary 员工月薪 from employees;注:在单引号中还要使用单引号的话,就必须使用两个单引号来实现一个单引号的功能。8、文本字符串*可以代表字符、数字或是日期。*当代表字符或日期的时候用单引号括起来,数字不需要。9、DISTINCT在查询时默认显示所有的行,包括有重复值的行。DISTINCT 消除重复行关键字,放在整查询列表的最前面。作用范围:整个查询列表的组合。消除重复行后会按字段的特性,做升序排列。(执行过程:先排序,再消除重复)select distinct department_id,job_id from employees;1.5、SQL
4、PLUS 与 SQL 的关系SQL *是一种语言*ANSI 标准*关键字不能缩写*用于操作数据库中的数据和表的定义1、SQLPLUS 命令的功能:*描述表的结构*编辑SQL 语句2、查询 SQLPLUS 命令help + 命令3、SQLPLUSW 在 WINDOWS 下运行的分析器。登陆ISQLPLUS(1)先到服务中启动OracleOraHome92HTTPServer(2)在浏览器中输入:http:/wnj:7778/isqlplusURL(网页中的地址)资源来自网络,仅供学习! Oracle 从入门到精通第 10 页,共 106 页4、SQLPLUS 命令:4.1、与文件相关的命令:4.
5、1.1、 spool + 路径.spool off4.1.2、save把当前内存中的语句保存为文本文件。4.1.3、run 或 /运行当前内存中的语句4.1.4、clear buffer(cl buff)清空当前内存中的语句4.1.5、start 读取并执行4.1.6、get 读取不执行4.2 编辑命令: List 列出一条语句*表示当前行 Change 修改命令原来c/jj/kkc/jjj/xxx input 在当前行之后插入一行新的数据 append 在当前行中插入新的东西n 写数字显示对应行 deletedel + 回车 删除当前行del 1 3 删除第一到第三行 edit l,c,i,
6、a,n,d,e 查看当前用户SHOW USER 默认的日期格式:DD-MON-RR 日-月-年 日期可以进行比较; 字符可以进行比较(以字母的 ASCLL 码比较); IN(set)或NOT IN 匹配任何列表中的值; LIKE 模糊匹配字符串值; IS NULL 是否空值; IS NOT NULL 是否不为空; BETWEEN 可以做数字、日期和字符的比较。 通配符 %、_S_mithWHERE first_name like s/_%escape/;解释这个符号后的下划线为正常的字符。如果不加,将被视为通配符作用的下划线。_只能通配一个字符主要用于通配固定位数的字符。例如查询月收入五位数以
7、上的员工。五位就可以用_来查询。资源来自网络,仅供学习! Oracle 从入门到精通第 11 页,共 106 页 逻辑操作符(用在 WHERE 子句中)1. AND2. OR3. NOT先执行 NOT ,再执行 AND 最后执行 OR。 ORDER BYORDER BY 子句在 SELECT 语句的最后。 ASC:升序 DESC:降序 空值作为无穷大来处理。 rownum 显示行数量约束的关键字(在结果中可以做代理键使用);可以按照查询列表中序号进行排序。系统在用户写出查询列表的同时就赋予每个列名一个序号,升序赋予。例: SELECT name,phone,adress from.;1 2 3
8、1.6、单行函数单行函数:对单行数据进行计算并返回一个值的函数。*修改数据项*接受参数返回一个值。*对每行进行操作。*每行返回一个结果。*可以修改数据类型*可以嵌套1、character 字符类型函数: LOWER()强制小写 UPPER()强制大写 INITCAP()每个单词首字母大写 ,可以用在WHERE 子句中。 CONCAT(,)连接函数 SUBSTR(string,a,b)返回 string 的一部分,a 和b 以字符为单位。 SUBSTRB(string,a,b)返回 string 的一部分,a 和b 是以字节为单位。 SUBSTRC(string,a,b)返回 string 的一
9、部分,a 和b 是以UNICODE 完全字符为单位。 SUBSTR2(string,a,b)返回 string 的一部分,a 和b 是以UCS2 代码点为单位。 SUBSTR4(string,a,b)返回 string 的一部分,a 和b 是以UCS4 代码点为单位。以上函数都是返回string 的一部分,从字符位置A 开始,长为B 个字符。如果A 是0,那它就被认为是1(字符串的开始位置)。如果A 是正数,那么字符从左边开始数。如果是负数,则从STRING的末尾开始,从右边数。如果B 不存在,那么缺省是整个字符串。如果B 小于1,将返回NULL。如果A 或B 使用了浮点数,那么该数值首先被节
10、取成一个整数,返回类型与STRING 相同。 LENGTH(string) LENGTHB(string) LENGTHC(string) LENGTH2(string)资源来自网络,仅供学习! Oracle 从入门到精通第 12 页,共 106 页 LENGTH4(string)以上函数返回string 的长度。因为CHAR 类型的值是填充空格的,所以如果string 是CHAR 数据类型,那么末尾的空格算在长度之内。如果string 是NULL,函数返回NULL。 INSTR(string1,string2,a,b) 返回string1 中包含string2 的位置。a 和b 以字符为单位
11、。 INSTRB(string1,string2,a,b) 返回string1 中包含string2 的位置。a 和b 是以字节为单位。 INSTRC(string1,string2,a,b)返回string1 中包含string2 的位置。a 和b 是以UNICODE完全字符为单位。 INSTR2(string1,string2,a,b) 返回string1 中包含string2 的位置。a 和b 是以UCS2 代码点为单位 INSTR4(string1,string2,a,b) 返回string1 中包含string2 的位置a 和b 是以UCS4 代码点为单位。以上函数返回string1
12、 中包含string2 的位置。从左边开始扫描string1,起始位置是A。如果A 为负数那么从右边开始扫描。第B 次出现的位置将被返回。A 和B 缺省都为1,即返回在string1中第一次出现string2 的位置。如果string2 在A 和B 的规定下没有找到那么就返回0。位置的计算是相对于string1 的开始位置的,而不关A 和B 的取值。 LPAD(列名,数字,要补上的字符 )左补位 RPAD(列名,数字,要补上的字符 )右补位 TRIM(child_str FROM parents_str)将连续子串(只能有一个字符)从主串的两边截取出来,区分大小写。默认为截取空格。 LTRIM
13、()左截取 RTRIM()右截取 ascii(x)函数,返回X字符的十进制数,即 X 的ASCII 码值。 chr(x)函数,返回ASCII 码为 X 的字符。 length(x)函数,求串X 的长度,与之相似的是 lengthb(x)函数,用在多字节字符中。 replace(x,y,z)函数,返回值为将串 X 中的Y 串用Z 串替换后的结果字符串。若省略Z 参数,则将串X 中为Y 串的地方删除。 soundex(x)函数,返回串 X 的语音描述,这个描述由4 个字符组成,说明串X 的声音表示形式发音,有时在只知道一个名字的发音而不知道拼写情况下或许能用到。例:select soundex(s
14、mith) from dual; 返回值为:S530. translate(x,y,z)函数,返回将 X 串中每个字符按它在Y 串中出现的位置翻译成Z 串中相应位置的字符后的结果,相当与替换。例:select translate(this is an example,my is,#$% NLS 函数除了NCHR,这些函数都是以字符类型为参数返回字符类型值。 CONVERT(string,dest_charset,source_charset)将输入string 转换为指定字符集dest_charset。source_charset 是输入值的字符集如果它没有被指定,则缺省为数据库字符集。输入值
15、可以是CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB和NCLOB 类型。返回值为VARCHAR2 类型。如果dest_charset 中没有输入字符串中的一个字符,将会使用一个代替字符(由dest_charset 定义) NCHR(X)返回数据库国家字符集中值为X 的字符。NCHR(X) 等价于CHR(x USING NCHAR_CS). NLS_CHARSET_DECL_LEN(byte_width,charset)返回一个NCHAR 值的声明宽度(以字符为单位).byte_width 是该值以字节为单位的长度charset 是该值的字符集ID。资源来自网络,仅供学习!
16、 Oracle 从入门到精通第 13 页,共 106 页 NLS_CHARSET_ID(charset_name)返回指定字符集charset_name 的数字ID。为charset_name 指定“CHAR_CS”将返回数据库字符集的ID,为charset_name 指定“NCHAR_CS”将返回数据库国家字符集的ID。如果charset_name 是一个无效字符集名,将返回NULL。NLS_CHARSET_ID 和NLS_CHARSET_NAME 是互为反函数。 NLS_CHARSET_NAME(charset_id)返回指定字符集ID charset_id 的名字。如果 charset_
17、id 是一个无效字符集ID,将返回NULL; NLS_INITCAP(string,nlsparams)以字符串中每个单词第一个字符大写而单词中其余字母小写的形式返回string.nlsparams 指定了一个与该会话缺省的不同的排序次序。如果没有指定该参数,NLS_INITCAP 与INITCAP 相同。nlsparams 应该采取下面的形式:NLS_SORT=sort,其中sort 是一个语言排序序列。 NLS_UPPER(string,nlsparams)以大写形式返回string,不是字母的字符不受影响。如果没有指定nlsparams,NLS_UPPER 与UPPER相同。 NLS_L
18、OWER以小写形式返回string,不是字母的字符不受影响,如果没有指定nlsparams,NLS_LOWER 与LOWER相同。 NLSSORT(string,nlsparams)返回用于排序string 的字符串字节。所有值都被转换为字节字符串,这样在不同数据库之间就保持了一致性。如果没有指定nlsparams,那么就会使用会话中缺省排序序列。 TRANSLATE(string USING CHAR_CSINCHAR_CS)TRANSLATE.USING 将输入string 参数转换为数据库字符集(指定CHAR_CS)或数据库国家字符集(指定NCHAR_CS).string 可以是CHAR
19、、VARCHAR2、NCHAR、NVARCHAR2 类型。如果指定CHAR_CS,返回类型为VARCHAR2,如果指定NCHAR_CS,返回类型为NVARCHAR2。TRANSLATE.USING 是CONVERT功能的子集。如果输入值包含UCS2 字符或反斜线符号要使用UNSTR 函数。例:SQL select translate(asd using NCHAR_CS) from dual;-数据库国家字符集TRANSL-asdSQL select translate(asd using CHAR_CS) from dual;-数据库字符集TRA-asd UNSTR(s)返回转换为数据库UN
20、ICODE 字符集的字符串。s 可包含escaped UCS2 代码点字符。它由一个反斜线符号加上十六进制代码点数字组成。因此,要在字符串中包含一个反斜线符号就必须使用双反斜线符号().UNISTR 与TRANSLATE.USING 相似,差别是它仅能转换为UNICODE,而且可以包含escaped 字符。general/number/conversion/date资源来自网络,仅供学习! Oracle 从入门到精通第 14 页,共 106 页多行函数:对多行数据(一组数据)进行计算并返回一个值的函数。2、number 数字类型函数 ABS(x) 函数,此函数用来返回一个数的绝对值。 ACOS
21、(x)函数,返回X 的反余弦值。X 范围从1 到-1,输入值从0 到派,以弧度为单位。 ASIN(x)函数,返回X 的反正弦值。X 范围从1 到-1,输入值从-PI/2 到PI/2,以弧度为单位。 ATAN(x)函数,返回X 的反正切值。输入值从-PI/2 到PI/2,以弧度为单位。 BITAND(x,y)函数,返回X 和Y 的与结果。X 和Y 必须为非负整数。注意没有BITOR 函数,但是在UTL_RAW 包中有用于RAW 值的位操作符。 CEIL(x)函数,用来返回大于或等于X 的最小整数。 COS(x)函数,返回x 的余弦值。x 是以弧度表示的角度。 COSH(x)函数,返回X 的双曲余
22、弦。 EXP(x)函数,与power(x,y)函数类似,不过不用指明基数,返回E 的X 次幂。E=2.71828183. FLOOR(x)函数,用来返回小于或等于 X 的最大整数。 LN(x)函数,返回x 的自然对数。x 必须大于0。 LOG(x,y)函数,返回以 X 为底Y 的对数。底必须是不为0 和1 的正数,Y 是任意正数。 MOD(被除数,除数)求余函数,如果除数为0,则返回被除数。 POWER(x,y)函数,返回X 的Y 次幂。底X 和指数Y 都不必是正整数,但如果X 是负数的话,Y 必须是整数。 ROUND(x,y)函数,返回舍入到小数点右边Y 位的X 值。Y 缺省为0,这将X 舍
23、入为最接近的整数。如果Y 是负数,那么舍入到小数点左边相应的位上,Y 必须为整数。 SIGN(x)函数,此函数用来返回一个数的正负值,若为一个正数则返回1,若为一个负数则返回-1,若为0 则仍返回0,有点像把模拟量数字化的意思。 SIN(x)函数,返回 X 的正弦。x 是以弧度表示的角度。 SINH(x)函数,返回x 的双曲正弦。 SQRT(x)函数,返回x 的平方根,x 不能是负数。 TAN(x)函数,返回 x 的正切。 x 是以弧度表示的角度。 TANH(x)函数,返回x 的双曲正切。 TRUNC(x,y)截取值函数, Y 缺省为0,这样X 被截取成一个整数。如果Y 为负数,那么截取到小数
24、点左边相应位置 WIDTH_BUCKET(x,min,max,num_buckets) 只能在SQL 语句中使用。使用 WIDTH_BUCKET 可以根据输入参数创建等长的段。范围MIN 到MAX 被分为num_buckets节,每节有相同的大小。返回X 所在的那一节。如果X 小于MIN ,将返回0,如果X 大于或等于MAX,将返回num_buckets+1.MIN 和MAX 都不能为NULL,num_buckets 必须是一个正整数。如果X 是NULL,则返回 NULL。3、时间类型函数:(date)内部存储格式:世纪、年、月、日、小时、分钟、秒默认格式是:DD-MON-RR。SYSDATE
25、 返回当前的系统时间。SELECT SYSDATE FROM DUAL;资源来自网络,仅供学习! Oracle 从入门到精通第 15 页,共 106 页3.1、对日期的数学运算SELECT (SYSDATE-HIRE_DATE)/7 FROM TABLENAME WHERE ROWNUM;SYSDATE-HIRE_DATE:数字列ADD_MONTHS(date,x)函数,返回加上X 月后的日期DATE 的值。X 可以是任意整数。如果结果的月份中所包含的 日分量少于DATE 的月份的日分量,则返回结果月份的最后一天。如果不小于,则结果与DATE 的日分量相同。时间分量也相同。CURRENT_DA
26、TE 以DATE 类型返回会话时区当前的日期。这个函数同SYSDATE 相似,除了SYSDATE不管当会话时区。CURRENT_TIMESTAMP(precision) 以TIMESTAMP WITH TIMEZONE 类型返回会话时区当前的日期。如果指定precision,它指返回秒数的精度,缺省为6。DBTIMEZONE 返回数据库的时区。LAST_DAY(日期) 指定日期所在月份的最后一天的日期,这个函数可用来确定本月还有多少天。LOCALTIMESTAMP(precision) 以TIMESTAMP 类型返回会话时区的当前日期。如果指定precision,它指返回秒数的精度,缺省为6
27、。MONTHS_BETWEEN(离当前比较近的日期date1,以前的日期) 两个日期之间相差的月数(以日作为最小单位来计算的)。返回是相差的月数。如果date1 和date2 的日分量相同,或者这两个日期都分别是所在月的最后一天,那么返回结果是个整数。否则,返回结果包含一个分数,以一个月31 天计算。NEW_TIME(d,zone1,zone2)函数,当时区zone1 中的日期和时间是D 的时候,返回时区zone2 中的日期和时间。返回类型为DATE。zone1 和zone2 是字符字符串,另外的时区可在ORACLE9I 中通过查询V$TIMEZONE_NAMES 得到。NEXT_DAY (日
28、期,星期几) 指定日期后将要遇到的后七天的某一天的日期。ROUND(日期,MONTH/YEAR) 四舍五入得到新的日期。 保留位置是月和年SESSIONTIMEZONE 返回当前会话的时区。返回类型是一个时区偏移或时区片名的字符字符串。如果指 定格式,则与 ALTER SESSION 语句中的格式相同。SYS_EXTRACT_UTC(datetime) 从提供的DATETIME 中以UTC(Coordinated Universal Time)返回时间。DATETIME 必须包含一个时区。SYSTIMESTAMP 以TIMESTAMP WITH TIMEZONE 返回当前的日期和时间。当在分布
29、式SQL 语句中使用的时候,返回本地数据库的日期和时间。TRUNC(日期,MONTH/YEAR) 截取TZ_OFFSET(timezone) 以字符字符串返回提供的timezone 和UTC 之间的偏移量。timezone可以被指定为时区名或+/-HH:HI格式表示的偏移量。也可使用SESSIONTIMEZONE 和DBTIMEZONE 函数,返回格式为+/-HH:HI。字符字符串 时区AST 大西洋标准时ADT 大西洋夏令时BST 白令标准时BDT 白令夏令时CST 中央标准时CDT 中央夏令时EST 东部标准时EDT 东部夏令时GMT 格林威治平均时HST 阿拉斯加夏威夷标准时资源来自网络
30、,仅供学习! Oracle 从入门到精通第 16 页,共 106 页HDT 阿拉斯加夏威夷夏令时MST Mountain标准时MDT Mountain夏令时NST 纽芬兰标准时PST 太平洋标准时PDT 太平洋夏令时YST YuKon标准时YDT YuKon夏令时3.2、日期和日期时间算术运算 返回类型结果d1-d2 NUMBER返回D1 和D2 之间相差的天数。该值是一个数值,其小数部分代表一天的几分之几。dt1-dt2 INTERVAL返回DT1 和DT2 之间的时间间隔。i1-i2 INTERVAL返回i1 和i2 之间的差距。d1+d2 N/A非法仅能进行两个日期之间的相减。dt1+d
31、t2 N/A非法仅能进行两个日期之间的相减。i1+i2 INTERVAL返回i1 和i2 的和。d1+n DATE在D1 上加上N 天作为DATE 类型返回。N 可以是实数,它包含一天的几分之几。d1-n DATE从D1 上减去N 天作为DATE 类型返回。N 可以是实数,它包含一天的几分之几。dt1+i1 DATETIME返回DT1 和I1 的和。dt1-i1 DATETIME返回DT1 和I1 之间的差距。i1*n INTERVAL返回I1 的N 次方。i1/n INTERVAL返回I1 除以N 的值。表中注:D1 和D2 指日期值;DT1 和DT2 指日期时间值;I1 和I2 指时间间隔
32、值;N 指数字值。资源来自网络,仅供学习! Oracle 从入门到精通第 17 页,共 106 页3.3、显示转换:(conversion)TO_NUMBER(char,format_model) 字符转换到数字类型TO_DATE(char,format_model) 字符转换到日期类型格式说明符:要与前边要转换的字符串的格式要相同才能转换(匹配问题:格式和位数)。TO_CHAR(date,format_model,nlsparams)第二个参数可以省略,不指定格式,按系统默认格式输出。区分大小写。使用FM(在格式控制符前添加)符号可以去掉空格或是首位的零。如果指定了NLSPARAMS,则它控
33、制返回字符串的月和日分量所使用的语言。格式为:NLS_DATA_LANGUAGE=language,language 指需要的语言。例:select to_char(sysdate,FMyyyy-mm-dd) from dual;5.格式控制符的类型:YYYY 四位的年YEAR 年的拼写MM 2 位数字的月MONTH 月的全名MON 月名的前三个字符DY 星期名的前三个字符DAY 星期名的全称DD 2 位的天6.时间格式控制符:HH24:MI:SS AMHH12:MI:SS PM7.通过“”来实现加入特殊字符的格式控制符。SELECT TO_CHAR(SYSDATE,FMyyyy“年“mm“月
34、“dd“日“) from dual;DDSPTHDD 是格式控制符。TH 是序数词,将日期转换成英文的序数词拼写。SP 是基数词,将日期转换成英文的基数词拼写。TO_CHAR(NUM,format_model,nlsparams)转换数字将NUMBER 类型参数NUM 转换成VARCHAR2 类型。如果指定FORMAT,它会控制整个转换。如果没有指定FORMAT,那么结果字符串中将包含和NUM 中有效位的个数相同的字符。NLSPARAMS用来指定小数点和千分符及货币符号。它的格式可为:NLS_NUMERIC_CHARS= dg NLS_CURRENCY= string 。 d 和g 分别代表小
35、数点和千分符,STRING 代表货币符号。数字格式控制符:9 代表一位数字(替换符。有,数字显示;没有。不什么都显示。)0 代表一位数字(有数字,显示;没有,强制显示0。)$ 美圆符号L 本地货币资源来自网络,仅供学习! Oracle 从入门到精通第 18 页,共 106 页. 小数点, 千分符B 当整数部分为0 时,将整数部分填充为空格。 例:B999MI 返回带有后继符号而不是前导负号的负数值,正数值将带有后继的空格。999MIS 返回一个前导符号或后继符号,正数为+,负数为-。 S9999 或 9999SPR 使用尖括号返回负数。正数将有前导或后继空格。999PRD 在指定位置返回一个小
36、数点。两侧的9 的个数指定了最大的位数。99D9G 在指定位置返回千分符,G 可以在FORMAT_model 中出现多次。9G999G9C 在指定位置返回ISO 货币符号。C 可以在FORMAT_model 中出现多次。C99L 在指定位置上返回本地货币符号。 L99V 返回一个被乘以10 的N 次方的数值,这里N 是V 后边9 的个数。99V99EEEE 使用科学记数法返回该数值。9.99EEEERM 使用大写的罗马数字表示返回该数值。 RMrm 使用小写的罗马数字表示返回该数值。 rmFM 返回不含前导和后继空格的数值。 FM99.09格式控制符位数一定要大于或等于NUMBER 的位数,不
37、能小于。用RR 解决跨世纪问题: 小于50 的认为是1950-2050大于50 的认为是1951-1999数字和日期是不能相互转换的。ASCIISTR(string)返回只包含有效的SQL 字符和斜线的字符串。string 中的任何无效的字符将被转换为一个相当的数字,在之前加上斜线。BIN_TO_NUM(num,num.)将一位矢量转换位相当的数字。它的参数是一系列逗号隔开的NUMS,每一个都必须是0 或1。例如BIN_TO_NUM(1,0,1,1)将返回11,因为11 的二进制表示是1011。当使用分组集合和GROUPBY 子句时该函数很有用。CHARTOROWID(x)函数,将字符串转换成
38、一个ROWID 类型的值,注意格式必须采用ROWID 数据类型格式,即“数据块号:行序号:数据文件号”。COMPOSE(string)以相同字符集中完全规格化Unicode 形式返回string.string 可以是CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB 或NCLOB 类型。DECOMPOSE(string)返回一个Unicode 字符串。它是string 的规范分解。string 可以是CHAR、VARCHAR2、 NCHAR、NVARCHAR2、CLOB 或NCLOB 类型。FROM_TZ(timestamp,timezone)返回一个TIMESTAMP WI
39、TH TIMEZONE 类型值。它将TIMESTAMP(没有时区信息)和提供的TIMEZONE组合在一起。HEXTORAW(string)将由STRING 表示的二进制数值转换为一个RAW 数值。STRING 应该包含十六进制值。STRING 中的每两个字符表示结果RAW 中的一个字节。HEXTORAW 和RAWTOHEX 互为反函数。NUMTODSINTERVAL(x,unit)资源来自网络,仅供学习! Oracle 从入门到精通第 19 页,共 106 页将X 转换为INTERVAL DAY TO SECOND 值,X 应该是一个数字。UNIT 是一个字符字符串(可以是CHAR、VARCH
40、AR2、NCHAR 或NVARCHAR2),且是DAY、HOUR、MINUTE、SECOND之一。unit是不区分大小写的,返回值的缺省精度为9。NUMTOYMINTERVAL(x,unit)将X 转换成INTERVAL YEAR TO MONTH 值,X 应该是一个数字。UNIT 是一个字符字符串(可以是CHAR、VARCHAR2、NCHAR 或NVARCHAR2),且是YEAR或MONTH之一。unit 是不区分大小写的,返回值的缺省精度为9。REFTOHEX(refvalue)返回一REF refvalue 的十六进制表示。RAWTOHEX(rawvalue)将RAW 类型值rawval
41、ue 转换为一个十六进制表示的字符串。rawvalue 中的每个字节转换为一个双字符的字符串。RAWTONHEX(rawvalue)将RAW 类型值rawvalue 转换为一个十六进制表示的字符串。rawvalue 中的每个字节转换为一个双字符的字符串。RAWTONHEX 返回值是NVARCHAR2 类型而不是VARCHAR2 类型。ROWIDTOCHAR(rowid)函数,将ROWID 类型值转换成字符串。与CHARTOROWID 互为反函数。ROWIDYONCHAR(rowid) 与ROWIDTOCHAR 类似,返回类型是NCHAR,而不是CHAR。TO_CLOB(string)将stri
42、ng 转换为CLOB。string 可以是文字或另一个LOB 列。如果参数包含NCHAR 数据,它被转换为数据库字符集TO_DSINTERVAL(string,nlsparams)将string(可以是CHAR、VARCHAR2、NCHAR、NVARCHAR2)转换为 INTERVAL DAY TO SECOND 类型。如果选定nlsparams,则nlsparams 只能包含小数点和千分位字符的NLS_NUMERIC_CHARARCTERS表示。TO_LOB(long_column)将long_column 转换成LOB。这个函数用于将LONG 和LONG RAW 分别转换为CLOB 和LO
43、B。TO_MULTI_BYTE(string)返回将所有单字节字符替换为等价的多字节字符的STRING。该函数仅当数据库字符集同时包含单字节和多字节字符时才使用。否则,STRING 不会进行任何处理而被返回,与TO_SINGLE_BYTE互为反函数。TO_NCHAR和TO_CHAR 相似,结果是属于国家字符集而不是数据库字符集。TO_NCLOB(string)将STRING 转换为NCLOB。STRING 可以是文字或另一LOB 列。TO_SINGLE_BYTE(string)返回将所有双字节字符替换为等价的单字节字符的STRING。该函数仅当数据库字符集同时包含单字节和多字节字符时才使用。否
44、则,STRING 不会进行任何处理而被返回,与TO_MULTI_BYTE互为反函数。TO_TIMESTAMP(string,format,nlsparams)将其参数CHAR 或VARCHAR2 类型string 转换成TIMESTAMP 类型。TO_TIMESTAMP_TZ(string,format,nlsparams)将其参数CHAR 或VARCHAR2 类型string 转换成 TIMESTAMP WITH TIMEZONE 类型。TO_YMINTERVAL(string)将string(可以是CHAR、VARCHAR2、NCHAR、NVARCHAR2)转换为INTERVAL YEAR
45、 TO MONTH 类型。TO_YMINTERVAL 与TO_DSINTERVAL 相似,除了它不能使用NLS 参数作为参数并返回YEAR TO MONTH时间间隔而不DAY TO SECOND 时间间隔。资源来自网络,仅供学习! Oracle 从入门到精通第 20 页,共 106 页TO_label(x,y)函数,按照格式Y 将字符串X 转换成MLSLABEL 类型的一个值,若默认格式为Y,则按照默认格式进行转换。dump(w,x,y,z)函数,用来返回字符串EXPR 的数据类型,内部的存储位置和字符长度。dump(expr,return_datatype,start_position,le
46、ngth).return_datatype 是指定返回返回位置用什么方式表示,可以为8、10、16、17,分别表示用八进制、十进制、十六进制和字符类型。例:select dump(last_name,8,3,2) ,dump(last_name,10,3,2) ,dump(last_name,16,3,2) ,dump(last_name,17,3,2) from employeeswhere lower(last_name) = smith;greatest(x,y,.)函数,返回参数列表中的最大值。其参数的类型是由第一个参数决定的,可以为数值型、日期型、和字符型等,后面的参数被强制转换成此
47、种数据类型。进行字符串的比较时,其大小由字符在字符集中的数值决定,在字符集中的数值大,则此字符就大,对于字符串,此函数返回VARCHAR2 类型。least(x,y,)函数,返回列表参数中的最小值。与上两个函数类似的有:greatest_lb(x,y,)函数和least_lb(x,y,)函数,分别求出列表中的标签的最大下限和最小上限,其参数必须为MLSLABEL 类型,返回值为 RAW MLSLABEL 类型。user 函数,返回当前用户的数据库用户名。uid 函数,返回唯一标识当前用户的整数。这两个函数在完整性约束检查时会用到,可以当作引用变量一样引用它们。userenv(x)函数,返回当前
48、会话的一些信息,由X 指定返回何种信息。在写一个指定应用的审计测试表或决定为当前会话指定哪种语言时会用到,但完整性约束时不能用。参数:Entryid 返回有效的审计条目标识Label 返回当前会话的标签Language 以“语言.字符集”形式返回所用的语言和字符集Sessionid 返回正在使用的审计会话号Terminal 返回当前会话终端所用的操作系统1.7、嵌套函数:单行函数可以嵌套任意层;嵌套函数从最深层开始执行。1. 通用函数:BFILENAME(directory,file_name)返回操作系统中与物理文件file_name 相关的BFILE 位置指示符。directory 必须是数据字典资源来自网络,仅供学习! Oracle 从入门到精通第 21 页,共 106 页中的一个DIRECTORY 类型对象。COALESCE(,可以多个参数)返回从左到右的第一个非空的表达式。如果所有表达式都为NULL,则返回NULL。EMPTY_BLOB/EMPTY_CLOB返回一个空的LOB 位置指示符。EMPTY_CLOB 返回一个字符位置指示符,EMPTY_BLOB 返回一个二进制位置指示符。EXISTSNODE(XMLType_instrance,Xpath_string)使用Xpath_string 中的路径,确定由XMLType_instrance 标识的XML 文档的T