Oracle基本使用——第五章 Oracle函数
第五章 Oracle函数
5.1 数学函数
--数值数据(绝对值,三角函数,对数函数,随机函数)
绝对值函数 | ABS(x) | ||
平方根函数 | SQRT(x) | 求余函数 | MOD(x,y) |
获取整数函数 | CEIL(x)(不小于x的最小整数) | FLOOR(x)(不大于x的最大整数) | |
获取随机数函数 | DBMS_RANDOM.RANDOM(返回一个随机数) | DBMS_RANDOM.VALUE(x,y)(产生一个x~y的随机数) | |
四舍五入函数 | ROUND(x) | ROUND(x,y)(保留到小数点后y位;若y为负,保留到小数点左边 y位) |
TRUNC(x,y)(舍去小数点后y位数字;若y=0,则结果不包含小数部分;若为负,则截去x小数点左起第y位开始后面的值) |
符号函数 | SIGN(x)(x值为负,0,正返回-1,0,1) | SIGN(n)(返回参数n的符号,负,0,正返回-1,0,1) | |
幂运算函数 | POWER(x,y)(x的y次方) | EXP(x)(e的x方) | |
对数运算函数 | LOG(x,y)(以x为底y的对数) | LN(x)(返回x的自然对数,x>0) | |
正弦函数 | SIN(x) | 反正弦函数 | ASIN(x) |
余弦函数 | COS(x) | 反余弦函数 | ACOS(x) |
正切函数 | TAN(x) | 反正弦函数 | ATAN(x) |
5.2 字符串函数
计算字符串长度函数 | LENGTH(str) | 字节长度 |
合并字符串函数 | CONCAT(s1,s2) | |
字符串搜索函数 | INSTR(s,x) | 返回x字符在字符串s的位置 |
字母大小写转换函数:UPPER(str)(转换大写) | LOWER(str)(转换小写) | INITCAP(str)(单词首字母转换成大写) |
获取指定长度字符串的函数 | SUBSTR(s,m,n) | m截取位置,n截取长度 |
替换字符串的函数 | REPLACE(s1,s2,s3) | s1搜索的目标字符串;s2要搜索的字符串;s3替换的字符串,若无则删除s2 |
删除字符串首尾指定字符函数 | LTRIM(s,n)(删除指定左侧字符,n为需查找的字符;n不确定时删除左侧空格) | RTRIM(s,n)(同左) |
删除指定字符串的函数 | TRIM([LEADING/TRAILING/BOTH][trim_character FROM]trim_source) | LEADING删除trim_source的前缀字符;TRAILING删除其后缀;BOTH删除其前后缀;trim_character 删除的指定字符 |
字符集名称和ID互换函数 | NLS_CHARSET_ID(str)(字符集对应的id) | NLS_CHARSET_NAME(number)(字符集id对应的名称) |
5.3 日期和时间函数
获取当前日期和时间函数 | SYSDATE | SYSTIMESTAMP |
获取时区函数 | DBTIMEZONE(当前数据库的时区) | SESSIONTIMEZONE(当前会话的时区) |
获取指定月份最后一天的函数 | LAST_DAT(date) | |
获取指定日期后一周的日期的函数 | NEXT_DAY(date,char) | char星期几,全称缩写都允许 |
获取指定日期特定部分的函数 | EXTRACT(datetime) | |
获取两个日期之间的月份数的函数 | MONTHS_BETWEEN(date1,date2) |
5.4 转换函数
字符串转ASCII类型字符串函数 | ASCIISTR(chr) | |
二进制转十进制函数 | BIN_TO_NUM() | |
数据类型转换函数 | CAST(expr AS type_name) | 数字转换为字符或者字符转换为日期 |
数据转换字符串函数 | TO_CHAR(n,[fmt[nlsparam]]) | n数值型数据,fmt转换成字符的格式,nlsparam指定fmt的特征(小数点字符,组分隔符,本地钱币符号) |
字符转日期函数 | TO_DATE(char,[fmt[nlsparam]]) | |
字符转数字函数 | TO_NUMBER(expr,[fmt[nlsparam]]) | expr转换的字符串 |
5.5 系统信息函数
返回登陆名函数 | USER | |
返回会话 | USERENV() | parameter返回当前会话信息;‘Language’返回会话对应的语言、字符集等;SESSION返回ID;ISDBA返回当前用户是否为DBA |
5.6 例子
--产生两个(1-10)随机数
- SELECT DBMS_RANDOM.VALUE(1,10),DBMS_RANDOM.VALUE(1,10) FROM dual;
--计算三角函数,并将结果转换成整数值
- SELECT CEIL(SIN(2)),COS(1),TAN(0.3) FROM dual;
--创建表,并使用字符串和日期函数,对字段进行操作
- CREATE TABLE member(
- m_id NUMBER GENERATED BY DEFAULT AS IDENTITY,
- m_FN VARCHAR2(100),
- m_LN VARCHAR2(100),
- m_birth DATE,
- m_info VARCHAR2(255));
- INSERT INTO member VALUES(1011,'Halen ','Rark','29-6月-1970','GoodMan '); /*注意标准日期类型*/
- SELECT * FROM member;
--返回m_FN长度,返回一条记录中的人全名,将m_info转换成小写,将m_info转换成大写输出
- SELECT LENGTH(m_FN),CONCAT(m_FN,m_LN),LOWER(m_info),UPPER(m_info) FROM member;
--计算第一条记录人的年龄,提取m_birth中的年份,按照“YYYY-MM-DD”格式输出时间值
- SELECT EXTRACT(YEAR FROM SYSDATE),EXTRACT(YEAR FROM m_birth) AS age,EXTRACT(YEAR FROM m_birth) AS days,<span style="font-size:12px;">TO_CHAR(m_birth,'YYYY-MM-DD') AS birth FROM member;</span>
--插入新纪录m_FN为“Samuel”,m_LN“Green”,m_birth为当前系统时间,m_info“GoodWoman",计算插入的记录总数
- INSERT INTO member VALUES (1012,'Samuel','Green',SYSDATE,'GoodWoman');
- SELECT COUNT(*) FROM member;