oracle常用函数

  • 格式:doc
  • 大小:52.50 KB
  • 文档页数:21

个人收集整理资料, 仅供交流学习, 勿作商业用途

1 / 21 Oracle 常用SQL函数

单行函数包括,字符、数字、日期、转换和普通函数。

字符函数举例:

•全小写 LOWER('SQL Course'> sql course

•全大写 UPPER('SQL Course'> SQL COURSE

b5E2RGbCAP

•首字母大写 INITCAP('SQL Course'> Sql Course

拼接 CONCAT('Good', 'String'> GoodString

取子串 SUBSTR('String',1,3> Str

求长度 LENGTH('String'> 6p1EanqFDPw

数字函数举例:

ROUND -- 对数值进行四舍五入操作

TRUNC -- 截断。注意截断和舍入的位数,可以是负数。

ROUND (45.923, 2> 45.92

ROUND (45.923, 0> 46

ROUND (45.923, -1> 50

TRUNC (45.923, 2> 45.92

TRUNC (45.923> 45

TRUNC (45.923, -1> 40DXDiTa9E3d

MOD -- 返回两数相除的余数 个人收集整理资料, 仅供交流学习, 勿作商业用途

2 / 21 MOD(1600, 300> -- 100

日期函数:

•Oracle将日期按照内部格式将日期存成以下七个字节-世纪、年、月、日、 时、分、秒。•在Oracle中日期缺省的显示格式为:DD - MON - YY 。•可以使 用系统变量 SYSDATE 获取系统时间•。查看 SYSDATE时,可以使用虚拟表DUAL。RTCrpUDGiT

举例:

求两个日期间有多少个月MONTHS_BETWEEN('01-SEP-95','11-JAN-94'> 1.9774194

在日期上加指定的月数ADD_MONTHS('11-JAN-94',6>'11-JUL-94'

下一个星期几是什么时候NEXT_DAY('01-SEP-95','FRIDAY'>'08-SEP-95'

某月最后一天LAST_DAY('01-SEP-95'>'30-SEP-95'5PCzVD7HxA

把日期四舍五入到月份 ROUND('25-MAY-95','MONTH'> 01-JUN-95

ROUND('25-MAY-95 ','YEAR'> 01-JAN-95

把日期截断到月份 TRUNC('25-MAY-95 ','MONTH'>

01-MAY-95 个人收集整理资料, 仅供交流学习, 勿作商业用途

3 / 21 TRUNC('25-MAY-95 ','YEAR'> 01-JAN-95jLBHrnAILg

转换函数

TO_CHAR 将数字或日期转换为字符串

TO_NUMBER 将字符串转换成数字

TO_DATE 将字符串转换成日期

在转换函数中会使用格式串xHAQX74J0X

TO_CHAR(date, 'fmt'>

格式串包含在''中, 大小写敏感, 可以是任意有效的日期

格式

格式串:

YYYY 表示完整的四位数字年

YEAR 表示英文拼写的年

MM 表示两位数字月

MONTH 表示英文全拼的年

DY 表示三位缩写的星期

DAY 表示英文全拼的星期LDAYtRyKfE

一些特殊用法:

时间格式

HH24:MI:SS AM 15:45:32 PM 个人收集整理资料, 仅供交流学习, 勿作商业用途

4 / 21 在格式串中加入字符串

DD " of " MONTH 12 of OCTOBER

用后缀拼出整个日期

ddspth fourteenthZzz6ZB2Ltk

TO_CHAR(number, 'fmt'>

使用此函数将数字转换成数字

9 表示数字

0 强制为0

$ 设置美元符号

L 使用当前字符集的货币符号

. 小数点

, 千位分隔符dvzfvkwMI1

可以使用TO_NUMBER将字符串转换成数字

可以使用TO_DATE将字符串转换成格式日期

TO_DATE ('10 September 1992', 'dd Month

YYYY'>rqyn14ZNXI

使用格式串

TO_DATE(char [, 'fmt']>

普通函数

NULL值处理函数 个人收集整理资料, 仅供交流学习, 勿作商业用途

5 / 21 NVL (expr1, expr2>

如果expr1为NULL,返回expr2

NVL2 (expr1, expr2, expr3>

如果expr1为非空,则返回expr2,如果expr1为NULL,则返回expr3

NULLIF (expr1, expr2>

如果expr1=expr2,返回NULL,否则返回expr1EmxvxOtOco

COALESCE (expr1, expr2, ..., exprn>

返回表达式列表中的第一个非空表达式

SixE2yXPq5

条件表达式,用case表达式或decode实现条件逻辑

CASE表达式

CASE expr WHEN comparison_expr1 THEN return_expr1

[WHEN comparison_expr2 THEN

return_expr2

WHEN comparison_exprn THEN

return_exprn

ELSE else_expr]

END6ewMyirQFL 个人收集整理资料, 仅供交流学习, 勿作商业用途

6 / 21 decode函数

DECODE(col|expression, search1, result1

[, search2,result2,...,]

[, default]>kavU42VRUs

分组函数:

AVG (DISTINCT|ALL|n>

COUNT (DISTINCT|ALL|expr|*>

MAX (DISTINCT|ALL|expr>

MIN (DISTINCT|ALL|expr>

STDDEV (DISTINCT|ALL|n>

SUM (DISTINCT|ALL|n>

VARIANCE (DISTINCT|ALL|n>y6v3ALoS89

常用SQL字符串函数问题集锦

出处:开店乐电子商务研究 作者:开店乐电… 更新时间:2007-12-8 17:57:52 M2ub6vSTnP

问:

请教一个SQL 2000 SEVER问题:

select * from itemcode

where code like '40%'

如何让code=40101001

变成code=401-01-001 个人收集整理资料, 仅供交流学习, 勿作商业用途

7 / 21 目前有666个CODE是类似40101001

用什么语句能把它变成401-01-001

答:

update itemcode set

code=replace(code,left(code,8>,left(code,3>+'-'+substring(code,4,2>+'-'+substring(code,6,3>> where code

like '40%'0YujCfmUCw

update itemcode set

code=replace(code,left(code,8>,left(code,3>||'-'||substr(code,4,2>||'-'||substr(code,6,3>> where code like

'40%'(PL/SQL语法>eUts8ZQVRd

问:

replace(code,left(code,8>,left(code,3>+'-'+substring(code,4,2>+'-'+substring(code,6,3>>是什么意思?

sQsAEJkW5T

答:

拿 code=123456789 做例子

a = left(code,8> = 12345678

b = left(code,3> = 123

c = substring(code,4,2> = 45

d = substring(code,6,3> = 678

e = b+'-'+c+'-'+e = 123-45-678 个人收集整理资料, 仅供交流学习, 勿作商业用途

8 / 21 f = replace(code,a,e> = 123-45-6789

配合下边的来看,应该能明白了

1、left(code,8> 取前8位

2、substring(code,4,2> 从第4位开始取2位

3、+ 是字符串连接符

4、replace(a,str1,str2> 将a中的str1替换为str2

几问几答下来,我就想着要整理一份完整的SQL字符串函数出来,借以学习和方便以后查询。

SQL字符串函数

字符串函数对二进制数据、字符串和表达式执行不同的运算。此类函数作用于CHAR、VARCHAR、 BINARY、 和VARBINARY 数据类型以及可以隐式转换为CHAR 或VARCHAR的数据类型。可以在SELECT 语句的SELECT 和WHERE 子句以及表达式中使用字符串函数。常用的字符串函数有:GMsIasNXkA

一、字符转换函数

1、ASCII(>

返回字符表达式最左端字符的ASCII 码值。在ASCII<)函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。TIrRGchYzg

2、CHAR(>

将ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR<) 返回NULL 。7EqZcWLZNX