好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Oracle内置SQL函数

http://www.cnblogs.com/yening10000/archive/2009/07/02/1515284.html F.1 字符函数——返回字符 这些函数全都接收的是字符族类型的参数 (CHR 除外 ) 并且返回字符 . 除了特别说明的之外 , 这些函数大部分返回 VARCHAR2 类型的数 . 字符函数的返回类型所受


http://www.cnblogs.com/yening10000/archive/2009/07/02/1515284.html


F.1 字符函数——返回字符值

这些函数全都接收的是字符族类型的参数 (CHR 除外 ) 并且返回字符值 . 除了特别说明的之外 , 这些函数大部分返回 VARCHAR2 类型的数值 . 字符函数的返回类型所受的限制和基本数据库类型所受的限制是相同的 , 比如 : VARCHAR2 数值被限制为 2000 字符 (ORACLE 8 中为 4000 字符 ), 而 CHAR 数值被限制为 255 字符 ( 在 ORACLE8 中是 2000). 当在过程性语句中使用时 , 它们可以被赋值给 VARCHAR2 或者 CHAR 类型的 PL/SQL 变量 .

ASCII

语法: ascii(char c)

功能 :返回一个字符串的第一个字符的 ASCII 码,他的逆函数是 CHR()

使用位置 : 过程性语句和 SQL 语句。

select ascii( ' 罗 ' ) from dual;
select chr( 49886) from dual;

CHR

语法 : chr(x)

功能: 返回在数据库字符集中与 X 拥有等价数值的字符。 CHR 和 ASCII 是一对反函数。经过 CHR 转换后的字符再经过 ASCII 转换又得到了原来的字符。

使用位置 :过程性语句和 SQL 语句。

CONCAT

语法: CONCAT ( c1,c2 )

功能: c1,c2 均为字符串,函数将 c2 连接到 c1 的后面,如果 c1 为 null, 将返回 c2. 如果 c2 为 null, 则返回 c1 ,如果 c1 、 c2 都为 null ,则返回 null, 他和操作符 || 返回的结果相同 .

使用位置: 过程性语句和 SQL 语句。

INITCAP

语法: INITCAP ( string )

功能: 返回字符串的每个单词的第一个字母大写而单词中的其他字母小写的 string 。单词是用 . 空格或给字母数字字符由空格,控制字符,标点符号进行分隔。不是字母的字符不变动。

使用位置: 过程性语句和 SQL 语句。

select INITCAP('luo,jia,you')from dual;

select INITCAP('luo jia you')from dual;

LTRIM

语法: LTRIM ( string1,string2 )

功能: 返回删除从左边算起出现在 string2 中的字符的 string1 。 String2 被缺省设置为单个的空格。数据库将扫描 string1 ,从最左边开始。当遇到不在 string2 中的第一个字符,结果就被返回了。 LTRIM 的行为方式与 RTRIM 很相似。

使用位置: 过程性语句和 SQL 语句。

LOWER

语法: LOWER(string)

功能: 返回字符串 , 并将所有的字符小写

使用位置: 过程性语句和 SQL 语句。

NLS_INITCAP

语法: NLS_INITCAP ( string[,nlsparams] )

功能: 返回字符串每个单词第一个字母大写而单词中的其他字母小写的 string , nlsparams

指定了不同于该会话缺省值的不同排序序列。如果不指定参数,则功能和 INITCAP 相同。 Nlsparams 可以使用的形式是:

‘ NLS_SORT=sort’

这里 sort 制订了一个语言排序序列。

使用位置: 过程性语句和 SQL 语句。

NLS_LOWER

语法: NLS_LOWER ( string[,nlsparams] )

功能: 返回字符串中的所有字母都是小写形式的 string 。不是字母的字符不变。

Nlsparams 参数的形式与用途和 NLS_INITCAP 中的 nlsparams 参数是相同的。如果 nlsparams 没有被包含,那么 NLS_LOWER 所作的处理和 LOWER 相同。

使用位置; 过程性语句和 SQL 语句。

NLS_UPPER

语法: nls_upper ( string[,nlsparams] )

功能: 返回字符串中的所有字母都是大写的形式的 string 。不是字母的字符不变。 nlsparams 参数的形式与用途和 NLS_INITCAP 中的相同。如果没有设定参数,则 NLS_UPPER 功能和 UPPER 相同。

使用位置: 过程性语句和 SQL 语句。

REPLACE

语法: REPLACE ( string , search_str[,replace_str] )

功能: 把 string 中的所有的子字符串 search_str 用可选的 replace_str 替换,如果没有指定 replace_str ,所有的 string 中的子字符串 search_str 都将被删除。 REPLACE 是 TRANSLATE 所提供的功能的一个子集。

使用位置: 过程性语句和 SQL 语句。

RPAD

语法: RPAD ( string1,x[,string2] )

功能: 返回在 X 字符长度的位置上插入一个 string2 中的字符的 string1 。如果 string2 的长度要比 X 字符少,就按照需要进行复制。如果 string2 多于 X 字符,则仅 string1 前面的 X 各字符被使用。如果没有指定 string2 ,那么使用空格进行填充。 X 是使用显示长度可以比字符串的实际长度要长。 RPAD 的行为方式与 LPAD 很相似,除了它是在右边而不是在左边进行填充。

使用位置: 过程性语句和 SQL 语句。

LPAD

语法: LPAD ( string1,x[,string2] )

功能: 返回在 X 字符长度的位置上插入一个 string2 中的字符的 string1 。如果 string2 的长度要比 X 字符少,就按照需要进行复制。如果 string2 多于 X 字符,则仅 string1 前面的 X 各字符被使用。如果没有指定 string2 ,那么使用空格进行填充。 X 是使用显示长度可以比字符串的实际长度要长。 RPAD 的行为方式与 LPAD 很相似,除了它是在右边而不是在左边进行填充。

String1,string2 均为字符串, x 为整数。在 string1 的左侧用 string2 字符串补足致长度 x, 可多次重复,如果 x 小于 string1 的长度,那么只返回 string1 中左侧 x 个字符长的字符串,其他的将被截去。 String2 的缺省值为单空格

使用位置: 过程性语句和 SQL 语句。

select LPAD('123',8,'0') from dual; -- 00000123

select LPAD('123456789',8,'0') from dual; --12345678

RTRIM

语法 : RTRIM ( string1,[,string2] )

功能 : 返回删除从右边算起出现在 string1 中出现的字符 string2. string2 被缺省设置为单个的空格 . 数据库将扫描 string1, 从右边开始 . 当遇到不在 string2 中的第一个字符 , 结果就被返回了 RTRIM 的行为方式与 LTRIM 很相似 .

使用位置: 过程性语句和 SQL 语句。

SOUNDEX

语法 : SOUNDEX ( string )

功能 : 返回 string 的声音表示形式 . 这对于比较两个拼写不同但是发音类似的单词而言很有帮助 . 返回与 string 发音相似的词

使用位置: 过程性语句和 SQL 语句。

SUBSTR

语法 : SUBSTR ( string,a[,b] )

功能 : 返回从字母为值 a 开始 b 个字符长的 string 的一个子字符串 . 如果 a 是 0, 那么它就被认为从第一个字符开始 . 如果是正数 , 返回字符是从左边向右边进行计算的 . 如果 b 是负数 , 那么返回的字符是从 string 的末尾开始从右向左进行计算的 . 如果 b 不存在 , 那么它将缺省的设置为整个字符串 . 如果 b 小于 1, 那么将返回 NULL. 如果 a 或 b 使用了浮点数 , 那么该数值将在处理进行以前首先被却为一个整数 .

使用位置: 过程性语句和 SQL 语句。

SUBSTRB

语法 : SUBSTRB ( string,a[,b] )

功能 : 与 SUBSTR 大致相同,只是 a,b 是以字节计算

使用位置: 过程性语句和 SQL 语句。

TRANSLATE

语法 : TRANSLATE(string,from_str,to_str)

功能 : 返回将所出现的 from_str 中的每个字符替换为 to_str 中的相应字符以后的 string. TRANSLATE 是 REPLACE 所提供的功能的一个超集 . 如果 from_str 比 to_str 长 , 那么在 from_str 中而不在 to_str 中而外的字符将从 string 中被删除 , 因为它们没有相应的替换字符 . to_str 不能为空 .Oracle 把空字符串认为是 NULL, 并且如果 TRANSLATE 中的任何参数为 NULL, 那么结果也是 NULL.

使用位置: 过程性语句和 SQL 语句。

select TRANSLATE( 'fumble' , 'umf' , 'abc' ) test from dual; --cabble
select TRANSLATE( 'fumble' , 'fu' , 'abcdd' ) test from dual; --abmble

TRIM

语法 : TRIM(string)

功能 : 删除 string 字符串前后的空格

使用位置: 过程性语句和 SQL 语句。

UPPER

语法 : UPPER ( string )

功能 : 返回大写的 string. 不是字母的字符不变 . 如果 string 是 CHAR 数据类型的 , 那么结果也是 CHAR 类型的 . 如果 string 是 VARCHAR2 类型的 , 那么结果也是 VARCHAR2 类型的 .

使用位置 : 过程性语句和 SQL 语句。

F.2 字符函数——返回数字

这些函数接受字符参数回数字结果 . 参数可以是 CHAR 或者是 VARCHAR2 类型的 . 尽管实际下许多结果都是整数值 , 但是返回结果都是简单的 NUMBER 类型的 , 没有定义任何的精度或刻度范围 .

ASCII

语法 : ASCII ( string )

功能 : 数据库字符集返回 string 的第一个字节的十进制表示 . 请注意该函数仍然称作为 ASCII. 尽管许多字符集不是 7 位 ASCII.CHR 和 ASCII 是互为相反的函数 .CHR 得到给定字符编码的响应字符 . ASCII 得到给定字符的字符编码 .

使用位置 : 过程性语句和 SQL 语句。

INSTR

语法 : INSTR ( string1, string2[a,b] )

功能 : 得到在 string1 中包含 string2 的位置 . string1 时从左边开始检查的 , 开始的位置为 a, 如果 a 是一个负数 , 那么 string1 是从右边开始进行扫描的 . 第 b 次出现的位置将被返回 . a 和 b 都缺省设置为 1, 这将会返回在 string1 中第一次出现 string2 的位置 . 如果 string2 在 a 和 b 的规定下没有找到 , 那么返回 0. 位置的计算是相对于 string1 的开始位置的 , 不管 a 和 b 的取值是多少 .

使用位置 : 过程性语句和 SQL 语句。

INSTRB

语法 : INSTRB ( string1, string2[a,[b]] )

功能 : 和 INSTR 相同 , 只是操作的对参数字符使用的位置的是字节 .

使用位置 : 过程性语句和 SQL 语句。

LENGTH

语法 : LENGTH ( string )

功能 : 返回 string 的字节单位的长度 .CHAR 数值是填充空格类型的 , 如果 string 由数据类型 CHAR, 它的结尾的空格都被计算到字符串长度中间 . 如果 string 是 NULL, 返回结果是 NULL, 而不是 0.

使用位置 : 过程性语句和 SQL 语句。

LENGTHB

语法 : LENGTHB ( string )

功能 : 返回以字节为单位的 string 的长度 . 对于单字节字符集 LENGTHB 和 LENGTH 是一样的 .

使用位置 : 过程性语句和 SQL 语句。

NLSSORT

语法 : NLSSORT ( string[,nlsparams] )

功能 : 得到用于排序 string 的字符串字节 . 所有的数值都被转换为字节字符串 , 这样在不同数据库之间就保持了一致性 . Nlsparams 的作用和 NLS_INITCAP 中的相同 . 如果忽略参数 , 会话使用缺省排序 .

使用位置 : 过程性语句和 SQL 语句。

F.3 数字函数

函数接受 NUMBER 类型的参数并返回 NUMBER 类型的数值 . 超越函数和三角函数的返回值精确到 36 位 .ACOS 、 ASIN 、 ATAN 、 ATAN2 的结果精确到 36 位 .

ABS

语法 : ABS(x)

功能 : 得到 x 的绝对值 .

使用位置 : 过程性语言和 SQL 语句。

ACOS

语法 : ACOS(x)

功能 : 返回 x 的反余弦值 . x 应该从 0 到 1 之间的数 , 结果在 0 到 pi 之间 , 以弧度为单位 .

使用位置 : 过程性语言和 SQL 语句。

ASIN

语法 : ASIN(x)

功能 : 计算 x 的反正弦值 . X 的范围应该是- 1 到 1 之间 , 返回的结果在- pi/2 到 pi/2 之间 , 以弧度为单位 .

使用位置 : 过程性语言和 SQL 语句。

ATAN

语法 : ATAN(x)

功能 : 计算 x 的反正切值 . 返回值在- pi/2 到 pi/2 之间 , 单位是弧度 .

使用位置 : 过程性语言和 SQL 语句。

ATAN2

语法 : ATAN2(x,y)

功能 : 计算 x 和 y 的反正切值 . 结果在负的 pi/2 到正的 pi/2 之间 , 单位是弧度 .

使用位置 : 过程性语言和 SQL 语句。

CEIL

语法 : CEIL(x)

功能 : 计算大于或等于 x 的最小整数值 .

使用位置 : 过程性语言和 SQL 语句。

COS

语法 : COS(x)

功能 : 返回 x 的余弦值 . X 的单位是弧度 .

使用位置 : 过程性语言和 SQL 语句。

COSH

语法 : COSH(x)

功能 : 计算 x 的双曲余弦值 .

EXP

语法 : EXP(x)

功能 : 计算 e 的 x 次幂 . e 为自然对数 , 约等于 2.71828.

使用位置 : 过程性语言和 SQL 语句。

FLOOR

语法 : FLOOR(x)

功能 : 返回小于等于 x 的最大整数值 .

使用位置 : 过程性语言和 SQL 语句。

LN

语法 : LN(x)

使用位置 : 过程性语言和 SQL 语句。

LOG

语法 : LOG(x,y)

功能 : 计算以 x 为底的 y 的对数 .x 必须大于 0 而且不等于 1, y 为任意正数 .

使用位置 : 过程性语言和 SQL 语句。

MOD

语法 : MOD(x,y)

功能 : 返回 x 除以 y 的余数 . 如果 y 是 0, 则返回 x

使用位置 : 过程性语言和 SQL 语句。

POWER

语法 : POWER(x,y)

功能 : 计算 x 的 y 次幂 .

使用位置 : 过程性语言和 SQL 语句。

ROUND

语 法 : ROUND(x[,y])

功能 : 计算保留到小数点右边 y 位的 x 值 . y 缺省设置为 0, 这会将 x 保留为最接近的整数 . 如果 y 小于 0, 保留到小数点左边相应的位 . Y 必须是整数 . 进行四舍五入。

使用位置 : 过程性语言和 SQL 语句。

SIGN

语法 : SIGN(x)

功能 : 获得 x 的符号位标志 . 如果 x 返回- 1. 如果 x=0 返回 0. 如果 x>0 返回 1.

使用位置 : 过程性语言和 SQL 语句。

SIN

语法 :SIN(x)

功能 : 计算 x 的正弦值 . X 是一个以弧度表示的角度 .

使用位置 : 过程性语言和 SQL 语句。

SINH

语法 :SINH(x)

功能 : 返回 x 的双曲正弦值 .

使用位置 : 过程性语言和 SQL 语句。

SQRT

语法 : SQRT(x)

功能 : 返回 x 的平方根 . x 必须是正数 .

使用位置 : 过程性语言和 SQL 语句。

TAN

语法 : TAN(x)

功能 : 计算 x 的正切值 , x 是一个以弧度位单位的角度 .

使用位置 : 过程性语言和 SQL 语句。

TANH

语法 : TANH(x)

功能 : 计算 x 的双曲正切值 .

使用位置 : 过程性语言和 SQL 语句。

TRUNC

语法 : TRUNC(x[,y])

功能 : 计算截尾到 y 位小数的 x 值 . y 缺省为 0, 结果变为一个整数值 . 如果 y 是一个负数 , 那么就截尾到小数点左边对应的位上 . 只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。

使用位置 : 过程性语言和 SQL 语句。

F.4 日期函数

日期函数接受 DATE 类型的参数 . 除了 MONTHS_BETWEEN 函数返回的是 NUMBER 类型的结果 , 所有其他的日期函数返回的都是 DATE 类型的数值 .

ADD_MONTHS

语法 : ADD_MONTHS(d,x)

功能 : 返回日期 d 加上 x 个月后的月份。 x 可以是任意整数。如果结果日期中的月份所包含的天数比 d 日期中的“日”分量要少。(即相加后的结果日期中的日分量信息已经超过该月的最后一天,例如, 8 月 31 日 加上一个月之后得到 9 月 31 日,而 9 月只能有 30 天)返回结果月份的最后一天。

使用位置 : 过程性语言和 SQL 语句。

LAST_DAY

语法 :LAST_DAY(d)

功能 : 计算包含日期的 d 的月份最后一天的日期 . 这个函数可以用来计算当月中剩余天数 .

使用位置 : 过程性语言和 SQL 语句。

MONTHS_BETWEEN

语法 : MONTHS_BETWEEN(date 1,date2)

功能 : 计算 date 1 和 date2 之间月数 . 如果 date 1,date2 这两个日期中日分量信息是相同的 , 或者这两个日期都分别是所在月的最后一天 , 那么返回的结果是一个整数 , 否则包括一个小数 , 小数为富余天数除以 31.

使用位置 : 过程性语言和 SQL 语句。

NEW_TIME

语法 : NEW_TIME(d,zone1,zone2)

功能 : 计算当时区 zone1 中的日期和时间是 s 时候 , 返回时区 zone2 中的日期和时间 . zone1 和 zone2 是字符串 .

使用位置 : 过程性语言和 SQL 语句。

NEXT_DAY

语法 : NEXT_DAY(d,string)

功能 : 计算在日期 d 后满足由 string 给出的条件的第一天 . String 使用位置 ; 当前会话的语言指定了一周中的某一天 . 返回值的时间分量与 d 的时间分量是相同的 . String 的内容可以忽略大小写 .

使用位置 : 过程性语言和 SQL 语句。

ROUND

语法 : ROUND(d[,format])

功能 : 将日期 d 按照由 format 指定的格式进行处理 . 如果没有给 format 则使用缺省设置 `DD`.

使用位置 : 过程性语言和 SQL 语句。

SYSDATE

语法 : SYSDATE

功能 : 取得当前的日期和时间 , 类型是 DATE. 它没有参数 . 但在分布式 SQL 语句中使用时 ,SYSDATE 返回本地数据库的日期和时间 .

使用位置 : 过程性语言和 SQL 语句。

TRUNC

语法 : TRUNC(d,format)

功能 : 计算截尾到由 format 指定单位的日期 d. 可以使用位置 : 格式和效果 . 缺省参数同 ROUNG.

使用位置 : 过程性语言和 SQL 语句。

F.5 转 换 函 数

转换函数用于在 PL/SQL 数据类型之间进行转换 .PL/SQL 尽可能地自动进行转换 , 也就是采用隐含方式转换 . 隐含转换无法转换格式信息 , 并且有些类型的数据之间不支持隐含转换 , 所以对这些可以采用显示转换 . 使用显示转换也是一种好的编程习惯

.

CHARTOROWID

语法 : CHARTOROWID(string)

功能 : 把包含外部格式的 ROWID 的 CHAR 或 VARCHAR2 数值转换为内部的二进制格式 . 参数 string 必须是包含外部格式的 ROWID 的 18 字符的字符串 .oracle7 和 oracle8 中的外部格式是不同的 .CHARTOROWID 是 ROWIDTOCHAR 的反函数 .

使用位置 : 过程性语言和 SQL 语句。

CONVERT

语法 : CONVERT(string,dest_set[,source_set])

功能 : 将字符串 string 从 source_set 所表示的字符集转换为由 dest_set 所表示的字符集 . 如果 source_set 没有被指定 , 它缺省的被设置为数据库的字符集 .

使用位置 : 过程性语言和 SQL 语句。

HEXTORAW

语法 : HEXTORAW(string)

功能 : 将由 string 表示的二进制数值转换为一个 RAW 数值 . String 应该包含一个十六进制的数值 . String 中的每两个字符表示了结果 RAW 中的一个字节 ..HEXTORAW 和 RAWTOHEX 为相反的两个函数 .

使用位置 : 过程性语言和 SQL 语句。

RAWTOHEX

语法 : RAWTOHEX(rawvalue)

功能 : 将 RAW 类数值 rawvalue 转换为一个相应的十六进制表示的字符串 . rawvalue 中的每个字节都被转换为一个双字节的字符串 . RAWTOHEX 和 HEXTORAW 是两个相反的函数 .

使用位置 : 过程性语言和 SQL 语句。

ROWIDTOCHAR

语法 : ROWIDTOCHAR(rowid)

功能 : 将 ROWID 类型的数值 rowid 转换为其外部的 18 字符的字符串表示 , 在 oracle7 和 oracle8 之间有些不一样的地方 . ROWIDTOCHAR 和 CHARTOROWID 是两个相反的函数 .

使用位置 : 过程性语言和 SQL 语句。

TO_CHAR(dates)

语法 : TO_CHAR(d [,format[,nlsparams]])

功能 : 将日期 d 转换为一个 VARCHAR2 类型的字符串 . 如果指定了 format, 那么就使用位置 : 它控制结果的方式 . 格式字符串是由格式元素构成的 . 第一个元素返回日期数值一个部份 , 例如日子 . 如果没有给定 format, 使用的就是该会话的缺省日期格式 . 如果指定了 nlsparams, 它就控制着返回字符串的月份和日分量信息所使用的语言 . nlsparams 的格式是 :

“NLS_DATE_LANGUAGE”

使用位置 : 过程性语言和 SQL 语句。

TO_CHAR(labels)

语法 : TO_CHAR(labels[, format ])

功能 : 将 MISLABEL 的 LABEL 转换为一个 VARCHAR2 类型的变量 .

使用位置 : 在 trusted 数据库的过程性语句和 SQL 语句。

TO_CHAR(numbers)

语法 : TO_CHAR(num[,format[,nlsparams]])

功能 : 将 NUMBER 类型的参数 num 转换为一个 VARCHAR2 类型的变量 . 如果指定了 format, 那么它会控制这个转换处理 . 表 5-5 列除了可以使用的数字格式 . 如果没有指定 format, 它会控制这个转换过程 . 下面列出了可以使用的数字格式 . 如果没有指定 format, 那么结果字符串将包含和 num 中有效位的个数相同的字符 . nlsparams 用来指定小数点和千分位分隔符和货币符号 . 可以使用的格式 :

`NLS_NUMERIC_CHARS=”dg”NLS_CURRENCY=”string”

d 和 g 分别表示列小数点和千分位分隔符 . String 表示了货币的符号 . 例如 , 在美国小数点分隔符通常是一个句点 (.), 分组分隔符通常是一个逗号 (,), 而千分位符号通常是一个 $.

使用位置 : 过程性语言和 SQL 语句。

TO_DATE

语法 : TO_DATE(String[,format[,nlsparams]])

功能 : 把 CHAR 或者 VARCHAR2 类型的 String 转换为一个 DATE 类型的变量 . format 是一个日期格式字符串 . 当不指定 format 的时候 , 使用该会话的缺省日期格式 .

使用位置 : 过程性语言和 SQL 语句。

TO-_LABEL

语法 : TO_LABEL(String[,format])

功能 : 将 String 转换为一个 MLSLABEL 类型的变量 . String 可以是 VARCHAR2 或者 CHAR 类型的参数 . 如果指定了 format, 那么它就会被用在转换中 . 如果没有指定 format, 那么使用缺省的转换格式 .

使用位置 : 过程性语言和 SQL 语句。

TO_MULTI_BYTE

语法 : TO_MULTI_BYTE(String)

功能 : 计算所有单字节字符都替位换位等价的多字节字符的 String. 该函数只有当数据库字符集同时包含多字节和单字节的字符的时候有效 . 否则 , String 不会进行任何处理 . TO_MULTI_BYTE 和 TO_SINGLE_BYTE 是相反的两个函数 .

使用位置 : 过程性语言和 SQL 语句。

TO_NUMBER

语法 : TO_NUMBER(String[,format[,nlsparams]])

功能 : 将 CHAR 或者 VARCHAR2 类型的 String 转换为一个 NUMBER 类型的数值 . 如果指定了 format, 那么 String 应该遵循相应的数字格式 . Nlsparams 的行为方式和 TO_CHAR 中的完全相同 .TO_NUMBER 和 TO_CHAR 是两个相反的函数 .

使用位置 : 过程性语言和 SQL 语句。

TO_SINGLE_BYTE

语法 : TO_SINGLE_BYTE(String )

功能 : 计算 String 中所有多字节字符都替换为等价的单字节字符 . 该函数只有当数据库字符集同时包含多字节和单字节的字符的时候有效 . 否则 , String 不会进行任何处理 .

TO_MULTI_BYTE 和 TO_SINGLE_BYTE 是相反的两个函数 .

使用位置 : 过程性语言和 SQL 语句。

F.6 分 组 函 数

分组函数返回基于多个行的单一结果 , 这和单行函数正好形成对比 , 后者是对单行返回一个结果 . 这些函数仅仅对于查询的选择列表和 GROUP BY 子句有效 .

这些函数大都可以接受对参数的修饰符 . 可以使用位置 : 的修饰符有 DISTINCT 和 ALL. 如果使用位置 : 了 DISTINCT 修饰符 , 那么在处理中仅仅会考虑由查询返回的不同的取值 .ALL 修饰符会使得该函数考虑由查询返回的所有数值 . 如果没有指定任何修饰符 , 那么缺省使用位置 : 的是 ALL 修饰符 .

AVG

语法 : AVG([DISTINCT | ALL]col)

功能 : 返回一列数据的平均值 .

使用位置 : 查询列表和 GROUP BY 子句 .

COUNT

语法 : COUNT(* | [DISTINCT | ALL] col)

功能 : 得到查询中行的数目 . 如果使用了 * 获得行的总数 . 如果在参数中传递的是选择列表 , 那么计算的是非空数值 .

GLB

获得由 label 界定的最大下界 . 函数仅用于 trusted oracle.GLB

语法 : GLB ([DISTINCT | ALL]label)

功能 : 获得由 label 界定的最大下界 . 函数仅用于 trusted oracle.

使用位置 : trusted 数据库的选择列表和 GROUP BY 子句 .

LUB

语法 : LUB ([DISTINCT | ALL]label)

功能 : 获得由 label 界定的最小上界 . 用于 trusted oracle. 数据库 .

使用位置 : trusted 数据库的选择列表和 GROUP BY 子句 .

过程性语言和 SQL 语句。

MAX

语法 : MAX([DISTINCT | ALL]col)

功能 : 获得选择列表项目的最大值 .

使用位置 : 仅用于查询选择和 GROUP BY 子句 .

MIN

语法 : MIN([DISTINCT | ALL]col)

功能 : 获得选择列表的最小值 .

使用位置 : 仅用于查询选择和 GROUP BY 子句 .

STDDEV

语法 : STDDEV([DISTINCT | ALL]col)

功能 : 获得选择列表的标准差 . 标准差为方差的平方根 .

使用位置 : 仅用于查询选择和 GROUP BY 子句 .

SUM

语法 :SUM ([DISTINCT | ALL]col)

功能 : 返回选择的数值和总和

使用位置 : 仅用于查询选择和 GROUP BY 子句 .

VARIANCE

语法 : VARIANCE([DISTINCT | ALL]col)

功能 : 返回选择列表项目的统计方差 .

使用位置 : 仅用于查询选择和 GROUP BY 子句 .

F.7 其 他 函 数

BFILENAME

语法 : BFILENAME(directory,file_name)

功能 : 获得操作系统中与物理文件 file_name 相关的 BFILE 位置指示符 . directory 必须是数据字典中的 DIRECTORY 类型的对象 .

使用位置 : 过程性语言和 SQL 语句。

DECODE

语法 :

DECODE(base_expr,comparel,valuel,

Compare2,value2,

default)

功能 : 把 base_expr 与后面的每个 compare (n) 进行比较 , 如果匹配返回相应的 value (n) . 如果没有发生匹配 , 则返回 default

使用位置 : 过程性语言和 SQL 语句。

DUMP

语法 : DUMP(expr[,number_format[,start_position][,length]])

功能 : 获得有关 expr 的内部表示信息的 VARCHAR2 类型的数值 . number_format 指定了按照下面返回数值的基数 (base):

number_format 结果

8 八进制表示

10 十进制表示

16 十六进制表示

17 单字符

默认的值是十进制 .

如果指定了 start_position 和 length, 那么返回从 start_position 开始的长为 length 的字节 . 缺省返回全部 .

数据类型按照下面规定的内部数据类型的编码作为一个数字进行返回 .

代码 数据类型

1 VARCHAR2

2 NUMBER

8 LONG

12 DATE

23 RAW

69 ROWID

96 CHAR

106 MLSLABEL

使用位置 : SQL 语句 .

EMPTY_CLOB/EMPTY_BLOB

语法 : EMPTY_CLOB

EMPTY_BLOB

功能 : 获得一个空的 LOB 提示符 (locator) .EMOTY_CLOB 返回一个字符指示符 , 而 EMPTY_BLOB 返回一个二进制指示符 .

使用位置 : 过程性语 言和 SQL 语句 .

GREATEST

语法 : GREATEST(expr1[,expr2]…)

功能 : 计算参数中最大的表达式 . 所有表达式的比较类型以 expr1 为准 .

返回一组表达式中的最大值 , 即比较字符的编码大小 .

使用位置 : 过程性语言和 SQL 语句 .

select greatest(’AA’,’AB’,’AC’) from dual;

select greatest(1,2,5) from dual;

GREATEST _LB

语法 : GREATEST_LB(label1[,label2]…)

功能 : (label) 列表中最大的下界 .MLSLABEL 、 RAWMLSLABEL 或者是一个表因字符串文字 . 函数只能用于 truested oracle 库 .

使用位置 : 过程性语言和 SQL 语句 .

LEAST

语法 : LEAST(expr1[,:expr2]…)

功能 : 获得参数中最小的表达式 .

使用位置 : 过程性语言和 SQL 语句 .

select least( ’啊’ , ’安’ , ’天’ ) from dual;

select least(1,5,9) from dual;

LEAST _UB

语法 : LEAST_UB(label1[,label2]…)

功能 : 与 GREATEST_UB 函数相似 , 本函数列表的最小上界 .

使用位置 : 过程性语言和 SQL 语句 .

NVL

语法 : NVL (expr1, expr2)

功能 : 如果 expr1 是 NULL, 那么返回 expr2, 否则返回 expr1.

如果 expr1 不是字符串 , 那么返回值的数据类型和 expr1 是相同的 , 否则 , 返回值的数据类型是 VARCHAR2. 此函数对于检查并确定查询的活动集不包含 NULL 值十分有用 .

使用位置 : 过程性语言和 SQL 语句 .

UID

语法 :

功能 : 获得当前数据库用的惟一标识 , 标识是一个整数 .

使用位置 : 过程性语言和 SQL 语句 .

USER

语法 :

功能 : 取得当前 oracle 用户的名字 , 返回的结果是一个 VARCHAR2 型字符串 .

使用位置 : 过程性语言和 SQL 语句 .

USERENV

语法 : USERENV(option)

功能 : 根据参数 option, 取得一个有关当前会话信息的 VARCHAR2 数值 .

使用位置 : 过程性语言和 SQL 语句 .

VSIZE

语法 : VSIZE(value)

功能 : 获得 value 的内部表示的字节数 . 如果 value 是 NULL, 结果是 NULL.

使用位置 : 过程性语言和 SQL 语句 .

F.8 sqlplus 常用 命令

SPOOL 将屏幕所有的 输出 输出到指定文件

-- spool 文件路径名 ;

spool g:"mysql.sql;

-- 业务操作

-- 结束 输出

spool off;

执行一个 SQL 脚本文件

我们可以将多条 sql 语句保存在一个文本文件中,这样当要执行这个文件中的所有的 sql 语句时,用上面的任一命令即可,这类似于 dos 中的批处理。

--start file_name

-- @ file_name

start g:"mysql.sql;

@ g:"mysql.sql;

对当前的输入进行编辑

edit

ed

重新运行上一次运行的 sql 语句

/

显示一个表的结构

desc table_name ;

清屏

clear screen;

退出

exit;

置当前 session 是否对修改的数据进行自动提交

--SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}

set autocommit on;

在用 start 命令执行一个 sql 脚本时,是否显示脚本中正在执行的 SQL 语句

-- SET ECHO {ON|OFF};

set echo on;

是否显示当前 sql 语句查询或修改的行数

--SET FEED[BACK] {6|n|ON|OFF}

-- 默认只有结果大于 6 行时才显示结果的行数。如果 set feedback 1 ,则不管查询到多少行都返回。当为 off 时,一律不显示查询的行数

set feedback 1;

是否显示列标题

-- 当 set heading off 时,在每页的上面不显示列标题,而是以空白行代替

--SET HEA[DING] {ON|OFF}

set heading on;

设置一行可以容纳的字符数

-- 如果一行的 输出内容大于设置的一行可容纳的字符数,则折行显示

--SET LIN[ESIZE] {80|n}

set linesize 100;

设置页与页之间的分隔

-- SET NEWP[AGE] {1|n|NONE}

-- 当 set newpage 0 时,会在每页的开头有一个小的黑方框。

-- 当 set newpage n 时,会在页和页之间隔着 n 个空行。

-- 当 set newpage none 时,会在页和页之间没有任何间隔

set newpage 1;

设置一页有多少行数

-- 如果设为 0 ,则所有的 输出内容为一页并且不显示列标题

--SET PA

查看更多关于Oracle内置SQL函数的详细内容...

  阅读:48次