ORACLE语句学习档

导读:*数据类型转换包括隐含转换和显式转换两方式,建议使用显式的数据类型转换,确保SQ,-转换函数-通用函数##########[字符函数]##########*字符大小写转换函数*函数功能用法返回结果-lower()转换为小写lower('JohnSmith')johnsmith-upper()转换为大写upper('JohnSmith')JOHNSMITH-ini

ORACLE语句学习档

- 转换函数

- 通用函数

##########[ 字符函数 ]##########

* 字符大小写转换函数

* 函数 功能 用法 返回结果

- lower() 转换为小写 lower('John Smith') john smith

- upper() 转换为大写 upper('John Smith') JOHN SMITH

- initcap() 单词首字母大写 initcap('JOHN smith') John Smith

* 例:

- select lower('John Smith') from dual;->(john smith)

- select upper('John Smith') from dual;->(JOHN SMITH)

- select initcap('JOHN smith') from dual;->(John Smith)

*字符处理函数

* 函数 功能 用法 返回结果

- concat() 字符串连接 concat('Hello', 'World') Hello World

- substr() 截取子串 substr('HelloWorld', 4, 3) loW

- length() 返回字符串长度 length('Hello World') 11

- instr() 定位子串 instr('Hello World', 'or') 8

- lpad() 左侧填充 lpad('Smith', 10, '*') *****Smith

- rpad() 右侧填充 rpad('Smith', 10, '*') Smith*****

- trim() 过滤首尾空格 trim(' Mr Smith ') Mr Smith

- replace() 替换 replace('ABA', 'A', 'C') CBC

* 注意:函数可嵌套使用

* 例:

- select concat('Hello', 'World') from dual;->(HelloWorld)

- select concat(concat(ename, ' is a '), job) info from emp where empno=7369;->(SMITH is a CLERK)

- select substr('HelloWorld', 4, 3) from dual;->(loW)

- select substr(substr('HelloWorld', 3, 6), 3, 3) from dual->(oWo)

- select length('Hello World') from dual;->(11)

- select instr('Hello World', 'or') from dual;->(8)

- select lpad('Smith', 10, '*') from dual;->(*****Smith)

- select rpad('Smith', 10, '*') from dual;->(Smith*****)

- select trim(' Mr Smith ') from dual;->(Mr Smith)

- select replace('ABA', 'A', 'C') from dual;->(CBC)

##########[ 数值函数 ]##########

* 函数 功能 用法 返回结果

- abs() 取绝对值 abs(-3.14) 3.14

- round() 四舍五入 round(3.1415) 3

round(3.1415, 3) 3.142

round(314.1592, -2) 300

- trunc() 截断 trunc(3.1415, 3) 3.141

- ceil() 向上取整 ceil(3.14) 4

- floor() 向下取整 floor(3.14) 3

- sign() 判断数值正负 sign(-3.14) -1

- sin().. 三角函数.. sin(3.14) .001592653

- power() 幂运算 power(4.5, 2) 20.25

- sqrt() 开平方根 sqrt(9) 3

- mod() 取模 mod(10, 3) 1

- exp() 基数为e的幂运算 exp(1) 2.71828183

- log() 对数运算 log(4, 16.0) 2

- ln() 自然对数运算 ln(7) 1.94591015

* 例:

- select abs(-3.14) from dual;->(3.14)

- select round(3.1415) from dual;->(3)

- select round(3.1415, 3) from dual;->(3.142)

- select round(314.1592, -2) from dual;->(300)

- select trunc(3.1415, 3) from dual;->(3.141)

- select trunc(3.1415, -3) from dual;->(0)

- select trunc(3.1415, 7) from dual;->(3.1415)

- select ceil(3.14) from dual;->(4)

- select floor(3.14) from dual;->(3)

- select sign(-3.14) from dual;->(-1)

- select sin(3.14) from dual;->(.001592653)

- select power(4.5, 2) from dual;->(20.25)

- select sqrt(9) from dual;->(3)

- select mod(10, 3) from dual;->(1)

- select exp(1) from dual;->(2.71828183)

- select log(4, 16.0) from dual;->(2)

- select ln(7) from dual;->(1.94591015)

##########[ 日期类型 ]##########

* 关于日期类型

- Oracle内部以数字格式存储日期和时间信息:世纪,年,月,日,小时,分钟,秒

- 缺省的日期格式是DD-MON-YY

- 可使用sysdate函数获取当前系统日期和时间

* 日期型数据的算术运算

- 日期型数据可以直接加或减一个数值,结果仍为日期

- 两个日期型数据可以相减,结果为二者相差多少天

* 查询200-12-25减1991-12-25一共有多少天

- select to_date('25-12月 -09') - to_date('25-12月 -1991') from dual;

##########[ 日期函数 ]##########

* 函数 功能 用法 返回结果

- add_months(x, y) 计算在日期x基础上增加y个月后的日期 add_months(sysdate, 2) - last_day(x) 返回日期x当月最后一天的日期 last_day(sysdate)

- months_between(x, y) 返回日期x和y之间相差的月数 months_between(sysdate, hiredate) - round(x, y) 将日期x四舍五入到y所指定的 round(sysdate, 'month')

日期单位(月或年)的第一天 round(sysdate, 'year')

- trunc(x, y) 将日期x截断到y所指定的 trunc(sysdate, 'month')

日期单位(月或年)的第一天 trunc(sysdate, 'year')

- next_day 计算指定日期x后的第一个星期几 next_day(sysdate, '星期二')

(由参数y指定)对应的日期

* 例:

- select add_months(sysdate, 2) from dual;->(05-10月-09)

- select last_day(sysdate) from dual;->(31-8月 -09)

- select hiredate, months_between(sysdate, hiredate) from emp;

- select months_between(sysdate, '17-12月-80') from dual;->(343.63907)

- select round(sysdate, 'month') from dual;->(01-8月 -09)

- select round(to_date('16-8月 -09'), 'month') from dual;->(01-9月 -09)

- select round(sysdate, 'year') from dual;->(01-1月 -10)

- select round(to_date('1-7月 -09'), 'year') from dual;->(01-1月 -10)

- select round(to_date('25-6月 -09'), 'year') from dual;->(01-9月 -09)

- select trunc(sysdate, 'month') from dual;->(01-8月 -09)

- select trunc(sysdate, 'year') from dual;->(01-1月 -09)

- select next_day(sysdate, '星期二') from dual;->(11-8月 -09)

- select next_day(next_day(sysdate, '星期二'), '星期二') from dual;->(18-8月 -09)

##########[ 转换函数 ]##########

* 数据类型转换包括隐含转换和显式转换两方式,建议使用显式的数据类型转换,确保SQL语句的可靠性

* 字符类型 -> 数值类型 -> to_number()

* 字符类型 -> 日期类型 -> to_date()

* 数值类型 -> 字符类型 -> to_char()

* 日期类型 -> 字符类型 -> to_char()

##########[ 日期 -> 字符串 ]##########

* to_char()函数可以将日期型数值转换为字符串形式

* 格式:

- to_char(date) // 缺省转换为'dd-mm-yy'格式

- to_char(date, 'format_model') // 转换为模式串指定的格式

* 例:

- select empno, ename, sal, to_char(hiredate, 'yyyy-mm-dd') from emp;

- select to_char(sysdate, 'yyyy-mm-dd hh:mi:ss') from dual;

- select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual;

##########[ 常用日期格式符 ]##########

* 格式符 说明 举列

- yyyy 年份 2008

- mm 用数字显示月份 02

- dd 在当月中是第几天 28

- day 星期几 星期五

- am/pm 显示上午/下午 上午

- hh/hh12/hh24 小时 2:30 14:30

- mi 分钟 30

- ss 秒钟 46

* 说明:除上述格式符外,日期模式串中还可直接出现如下字符( - : ; / );

* 如要显示其它文本字符串则需使用双引号括起来;也可在械串的开头使用"fm"标 * 记以去掉数字前面的零

* 例:

- select to_char(sysdate, 'yyyy"年"mm"月"dd"日" day hh24:mi:ss') from dual; - select to_char(sysdate, 'fmyyyy"年"mm"月"dd"日" day hh24:mi:ss') from dual;

##########[ 字符串 -> 日期 ]##########

* to_date()函数可以将字符串转换为日期型数值形式

五星文库wxphp.com包含总结汇报、考试资料、办公文档、党团工作、工作范文、资格考试、旅游景点、word文档、出国留学以及ORACLE语句学习档等内容。

本文共15页123456>>15