《Oracle Database 11g SQL 开发指南》学习笔记——第四章_使用简单函数(一)
4.1使用单行函数:字符函数,数字函数,转换函数,日期函数,正则表达式函数。
函数之间还可以组合嵌套使用。任何有效地函数组合都可以正常使用。从里层向外层计算。
4.1.1、字符函数。
ASCII(x)返回X的ASCII码; INITCAP(x):将x中每个单词的首字母转换成大写并返回。
CHR(x) ; CONCAT(x,y) ;LOWER(X); UPPER(x);
INSTR(x,find_string [,start] [,occurrence])在x中查找字符串find_string,可以指定开始位置和应该返回第几次出现的位置。LENGTH(X)
LPAD(x,width [,pad_string])在x左边补齐空格使得总长为width,可用pad_string补齐。
RPAD(x,width [,pad_string])右补齐
LTRIM(x [, trim_string]从x左边截去trim_string字符。RTRIM(x [, trim_string] 右截去。
TRIM([trim_char FROM] x) :在x左右同时截去trim_char
NANVL(x,value)如果x匹配NAN这个特殊值就返回value,否则返回x.
NVL(x)如果x为空则返回value 否则返回x。
NVL2(x,value1,value2)如果x非空返回value1,否则返回value2。
REPLACE(x,search_string,replace_string)此函数只会对返回的结果集进行修改不会真正修改数据库
SUBSTR(x,start[,length]).
SOUNDEX(x):返回一个包含x的发音的字符串。使用也对英文发音不同但比较接近的单词进行比较。
4.1.2数字函数。
ABS(x)返回绝对值;ACOS(x)反余弦; ASIN(x)反正弦; ATAN(x)反正切; COS(x); SIN(x); TAN(x);
COSH(x); SINH(x); TANH(x)双曲正切; ATAN2(x,y)返回x和y的反正切
BITAND(x,y)对x和y进行位与操作。CEIL(x)返回大于或等于x的最小整数。
FLOOR(x)返回小于等于x的最大整数。 EXP(x)返回e的x次幂。LOG(x,y):x为底y的对数
LN(x). MOD(x,y):x除以y的余数。 POWER(x,y)返回x的y次幂。 SQRT(x):返回平方根。
ROUND(x [,y])返回对x的取整的结果,y表示对第几位小数取整,若y为负数则对x在小数点左边的第|y|位处取整。
SIGN(x):如果x是负数返回-1,正数返回1,为0返回0
TRUNC(x[,y])返回对x的截断结果,y指定对第几位小数截断,若y为负数则对x在小数点左边的第|y|位处截断。
4.1.3、转换函数。
ASCIISTR(x):将x字符串转换成ASCII字符串。 BIN_TO_NUM(x). CAST(x AS type)将x转换为type所指定的兼容数据库类型。
CHARTOROWID(x):将x转换为ROWID类型。 COMPOSE(x):将x转换为Unicode编码字符串,字符串使用和x完全相同的类型
CONVERT(x,source_char_set,dest_char_set): DECODE(x,search,result,default):将x与search比较若相等返回result,否则返回default。
DECOMPOSE(x):现将x进行分解,再将其转换为Unicode字符串。 HEXTORAW(x):将包含十六进制字符的x转换为二进制数字。
RAWTOHEX(x):将二进制数字转换为一个varchar2类型的字符串,值为等价的十六进制数字。
RAWTONHEX(x):NVARCHAR2类型用于以国家字符集格式存储字符串。
NUMTODSINTERVAL(x):将数字x转换为 INTERVAL DAY TO SECOND 类型。 TO_DSINTERVAL(x);
NUMTOYMINTERVAL(x):将x转换为一个INTERVAL YEAR TO MONTH 类型。 TO_YMINTERVAL(x)
ROWIDTOCHAR(x):将x转换为varchar2类型;ROWIDTONCHAR(x):将x转换为nvarchar2类型。
TO_BINARY_DOUBLE(x); TO_BINARY_FLOAT(x); TO_BLOB(x):将x转换为二进制大对象类型。 TO_CLOB(x).
TO_CHAR(x [,format])。 TO_DATE(x [,format]). TO_MULTI_BYTE(x):将单字节字符转换为多字节字符。TO_SINGLE_BYTE(x)
TO_NCHAR(x):将数据库字符集中的x转换为NVARCHAR2字符串。 TO_NCLOB(x):NCLOB保存大量国家语言字符数据
TO_NUMBER(x [,format])。 TO_TIMESTAMP(x)。 TO_TIMESTAMP_TZ(x) 将x转换为TIMESTAMP WITH TIME ZONE类型
TRANSLATE(x,from_string,to_string)将x中所有的from_string转换为to_string。 UNISTR(x):将x中的字符转换为NCHAR
format字符串是TO_CHAR()函数的一个可选参数,其格式如下:
0999:返回数字前补0; 9990:返回数字后补0; . 和,:指定位置返回小数点或逗号。 ¥999:在数字开头返回美元符号
B9.99:如果定点数整数部分是0就在整数部分返回空格。 C999:指定位置返回ISO货币符号。 9.99EEEE:返回科学计数法表示
FM999:删除开头和结尾的空格。 99G99:指定位置返回组分隔符 L999:指定位置返回本地货币符号
999MI:负数返回负数后加一个减号,正数后加一个空格。 999PR:负数用<>括住,正数前后都加一个空格。
RN/rn:返回数字的大或小写的罗马数字形式,此数必须介于1和3999之间。
S999:在数字前加上正负号。 999S:在数字后加上正负号。 TM:返回有最少个字符组成的数字。
U999:在指定的位置返回货币符号。 99V99:返回该数字乘以10的x次方的结果,x是V后的数字
XXXX:返回数字的十六进制形式,若数字不是整数则取整。
TO_NUMBER()函数中的format可以使用以上格式。
CAST(x AS type):函数例子:SELECT CAST(1234.45 AS VARCHAR2(10)), CAST('9A7F' AS RAW(2)),CAST('05-JUL-O8' AS DATE) FROM DUAL;
可以将列值从一种类型转换为另一种SELECT CAST(PRICE AS VARCHAR2(10)),CAST(PRICE+2 AS NUMBER(7,2)) FROM PRODUCTS WHERE ID=1;