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