在Oracle数据库中,类型转换函数是处理数据时不可或缺的一部分,它们能够帮助我们高效地操作不同数据类型之间的转换,确保数据的准确性和完整性。本文将详细解释Oracle中的常见类型转换函数,包括数学函数、字符串函数以及日期函数,这些函数在日常的数据库管理与查询中扮演着至关重要的角色。 ### 数学类型转换函数 1. **ABS**: 绝对值函数,返回数值参数的绝对值。例如,`ABS(-5)`返回`5`。 示例:`SELECT ABS(-5) FROM dual;` 2. **SQRT**: 平方根函数,返回数值参数的平方根。例如,`SQRT(2)`大约返回`1.41421356`。 示例:`SELECT SQRT(2) FROM dual;` 3. **POWER**: 幂函数,返回第一个参数的第二个参数次幂。例如,`POWER(2,3)`返回`8`。 示例:`SELECT POWER(2,3) FROM dual;` 4. **COS**: 余弦函数,返回角度的余弦值。例如,`COS(3.14159)`返回大约`-1`(注意,输入是以弧度为单位)。 示例:`SELECT COS(3.14159) FROM dual;` 5. **MOD**: 模函数,返回两数相除的余数。例如,`MOD(1600,300)`返回`100`。 示例:`SELECT MOD(1600,300) FROM dual;` 6. **CEIL**: 向上取整函数,返回不小于参数的最小整数。例如,`CEIL(2.35)`返回`3`。 示例:`SELECT CEIL(2.35) FROM dual;` 7. **FLOOR**: 向下取整函数,返回不大于参数的最大整数。例如,`FLOOR(2.35)`返回`2`。 示例:`SELECT FLOOR(2.35) FROM dual;` 8. **ROUND**: 四舍五入函数,根据指定的小数位数对数值进行四舍五入。例如,`ROUND(45.923,1)`返回`45.9`。 示例: - `SELECT ROUND(45.923,1) FROM dual;` - `SELECT ROUND(45.923,0) FROM dual;` - `SELECT ROUND(45.923,-1) FROM dual;` 9. **TRUNC**: 截断函数,根据指定的小数位数截断数值,不进行四舍五入。例如,`TRUNC(45.923,1)`返回`45.9`。 示例: - `SELECT TRUNC(45.923,1) FROM dual;` - `SELECT TRUNC(45.923) FROM dual;` - `SELECT TRUNC(45.923,-1) FROM dual;` ### 字符串类型转换函数 1. **LOWER**: 将字符串转换为小写。例如,`LOWER('SQLCourse')`返回`sqlcourse`。 示例:`SELECT LOWER('SQLCourse') FROM dual;` 2. **UPPER**: 将字符串转换为大写。例如,`UPPER('SQLCourse')`返回`SQLCOURSE`。 示例:`SELECT UPPER('SQLCourse') FROM dual;` 3. **INITCAP**: 将字符串的每个单词首字母大写。例如,`INITCAP('SQLcourse')`返回`SqlCourse`。 示例:`SELECT INITCAP('SQLcourse') FROM dual;` 4. **CONCAT**: 连接两个或多个字符串。例如,`CONCAT('SQL','Course')`返回`SQLCourse`。 示例:`SELECT CONCAT('SQL','Course') FROM dual;` 5. **SUBSTR**: 返回字符串的一部分,从指定位置开始并具有指定长度。例如,`SUBSTR('String',1,3)`返回`Str`。 示例:`SELECT SUBSTR('String',1,3) FROM dual;` 6. **LENGTH**: 返回字符串的长度。例如,`LENGTH('Wellcom')`返回`7`。 示例:`SELECT LENGTH('Wellcom') FROM dual;` 7. **INSTR**: 返回子字符串在字符串中的起始位置。例如,`INSTR('String','r',1,1)`返回`3`。 示例:`SELECT INSTR('String','r',1,1) FROM dual;` 8. **LPAD**: 在字符串左侧填充指定字符到指定长度。例如,`LPAD('Hi',10,'-')`返回`--------Hi`。 示例:`SELECT LPAD('Hi',10,'-') FROM dual;` 9. **RPAD**: 在字符串右侧填充指定字符到指定长度。例如,`RPAD('Hi',10,'-')`返回`Hi--------`。 示例:`SELECT RPAD('Hi',10,'-') FROM dual;` 10. **TRIM**: 删除字符串开头和结尾的指定字符。例如,`TRIM('S' FROM 'SSMITH')`返回`MITH`。 示例:`SELECT TRIM('S' FROM 'SSMITH') FROM dual;` 11. **REPLACE**: 替换字符串中的一个子串为另一个子串。例如,`REPLACE('ABC','B','D')`返回`ADC`。 示例:`SELECT REPLACE('ABC','B','D') FROM dual;` ### 日期类型转换函数 1. **MONTHS_BETWEEN**: 计算两个日期之间的月份数。例如,`MONTHS_BETWEEN('04-11-05','11-1-01')`返回大约`57.7741935`。 示例:`SELECT MONTHS_BETWEEN('04-11-05','11-1-01') FROM dual;` 2. **ADD_MONTHS**: 增加或减少指定月份的日期。例如,`ADD_MONTHS('06-2-03',1)`返回`06-3-03`。 示例:`SELECT ADD_MONTHS('06-2-03',1) FROM dual;` 3. **NEXT_DAY**: 返回指定日期之后的下一个指定星期几的日期。例如,`NEXT_DAY('06-2-03','一')`返回`10-2-03`。 示例:`SELECT NEXT_DAY('06-2-03','一') FROM dual;` 4. **LAST_DAY**: 返回指定月份的最后一日的日期。例如,`LAST_DAY('06-2-03')`返回`28-2-03`。 示例:`SELECT LAST_DAY('06-2-03') FROM dual;` 5. **ROUND**: 根据指定的时间单位对日期进行四舍五入。例如,`ROUND(TO_DATE('13-2-03'),'YEAR')`返回`01-1-03`。 示例:`SELECT ROUND(TO_DATE('13-2-03'),'YEAR') FROM dual;` 6. **TRUNC**: 根据指定的时间单位截断日期,不进行四舍五入。例如,`TRUNC(TO_DATE('06-2-03'),'YEAR')`返回`01-1-03`。 示例:`SELECT TRUNC(TO_DATE('06-2-03'),'YEAR') FROM dual;` 以上函数在Oracle数据库中广泛使用,它们提供了强大的数据处理能力,使得开发者能够更灵活地进行数据检索和分析。熟练掌握这些函数的用法,将有助于提高数据库应用的效率和性能。
abs:求绝对值函数,如:abs(?5) 5
sqrt:求平方根函数,如:sqrt(2) 1.41421356
power:求幂函数,如:power(2,3) 8
cos:求余弦三角函数,如:cos(3.14159) ?1
mod:求除法余数,如:mod(1600, 300) 100
ceil:求大于等于某数的最小整数,如:ceil(2.35) 3
floor:求小于等于某数的最大整数,如:floor(2.35) 2
round:按指定精度对十进制数四舍五入,如:round(45.923, 1),结果,45.9
round(45.923, 0),结果,46
round(45.923, ?1),结果,50
trunc:按指定精度截断十进制数,如:trunc(45.923, 1),结果,45.9
trunc(45.923),结果,45
trunc(45.923, ?1),结果, 40
使用数值型函数练习。
使用求绝对值函数abs。
Sql代码
SELECT abs(?5) FROM dual;
执行结果:
ABS(?5)
---------------
5
说明:求?5的绝对值,结果为5。
ascii:获得字符的ASCII码,如:Ascii('A') 65
chr:返回与ASCII码相应的字符,如:Chr(65) A
lower:将字符串转换成小写,如:lower ('SQL Course') sql course
upper:将字符串转换成大写,如:upper('SQL Course') SQL COURSE
initcap:将字符串转换成每个单词以大写开头,如:initcap('SQL course') Sql Course
concat:连接两个字符串 concat('SQL', ' Course') SQL Course
substr:给出起始位置和长度,返回子字符串,如:substr('String',1,3) Str
length:求字符串的长度 length('Wellcom') 7
instr:给出起始位置和出现的次数,求子字符串在字符串中出现的位置,如:instr('String', 'r',1,1) 3
lpad:用字符填充字符串左侧到指定长度,如:lpad('Hi',10,'-') --------Hi
rpad:用字符填充字符串右侧到指定长度,如:rpad('Hi',10,'-') Hi--------
trim:在一个字符串中去除另一个字符串,如:trim('S' FROM 'SSMITH') MITH
replace:用一个字符串替换另一个字符串中的子字符串,如:replace('ABC', 'B', 'D') ADC
如果不知道表的字段内容是大写还是小写,可以转换后比较。
输入并执行查询:
Sql代码
SELECT empno, ename, deptno FROM emp WHERE lower(ename) ='blake';
结果为:
Sql代码
EMPNO ENAME DEPTNO --------------- ---------- ------------------------ 7698 BLAKE 30
说明:该查询将表中的雇员名转换成小写,与小写的blake进行比较。
剩余9页未读,继续阅读
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助