orcle
sql中,计算2.5的2次方1、power(2.5,2)=6.5 相同于2.5^2=6.5
2、exp(2)=7.38905609893065 相同于e^2=7.38905609893065 对数
3、ln(2)=0.6931471805599453 相同于e^0.6931471805599453=2 自然对数
4、mod(23,8)=7 相同于23%8取余等于7
5、四舍五入,2.1相当于2,2.6相当于2
round(5555.6666,2.1)=5555.67
round(5555.6666,-2.6)=5600
round(5555.6666)=5556
6、截取:
trunc(5555.66666,2.1)=5555.66
trunc(5555.66666,-2.6)=5500
trunc(5555.033333)=5555
7、求平方根
sqrt(64)=8 相当于8*8=64
8、求绝对数
abs(100)=100
abs(-100)=100
9、求正负值
sign(100)=1
sign(-100)=-1
sign(0)=0
10、向上取整
ceil(3.1)=4
ceil(2.8+1.3)=5
ceil(0)=0
11、向下取整
floor(3.1)=3
floor(2.8+1.3)=4
floor(0)=0
12、三角函数
正弦:sin(x) sin(1.57079)=1
余弦:COS(x) cos(-3.1415927)=-1
正切:TAN(x) tan(20)=2.2371609
双曲正弦:SIGH(x) sin(20)=0.91294525, ,sinh(20)=242582598
双曲余弦:COSH(x) cosh(20)=242582598
双曲正切:TANH(x) tanh(20)=1
反正弦:ASIN(x) asin(0.5)=0.52359878
反余弦:ACOS(x) acos(-1)=3.1415927
反正切:ATAN(x) atan(1)=0.78539816
13、ASCII编码
ascii('A')=65
14、将ASCII编码转为对应的值
chr(54740)=赵,chr(65)='A'
15、合并字符串
CONCAT(c1,c2)合并c1和c2为c1c2
concat('010-','88888888')||'转23'=010-88888888转23
16、处理字符串首字符为大写,其他均小写
INITCAP(c1)
initcap('smith abc aBC')=Smith Abc Abc
17、转换字符串为小写
LOWER(c1)
lower('AaBbCcDd')=aabbccdd
18、转换字符串为大写
UPPER(c1)
upper('AaBbCcDd')=AABBCCDD
19、处理字符串首字符为大写,其他均小写(可排序)
NLS_INITCAP(x[,y])
nls_initcap('ab cde')=Ab Cde
nls_initcap('a c b d e','nls_sort= SCHINESE_PINYIN_M')=A C B D E 转变首位字符为大写,并且进行排序
SCHINESE_PINYIN_M拼音排序
SCHINESE_RADICAL_M部首排序
SCHINESE_STROKE_M笔画排序
20、转换字符串为小写(可排序)
NLS_LOWER(x[,y])
nls_LOWER('Ab cDe')=ab cde
21、转换字符串为大写(可排序)
NLS_UPPER(x[,y])
NLS_UPPER('ab cde')=AB CDE
22、在指定字符串中搜索指定子字符串
1个汉字算1个
INSTR(C1,C2[,I[,J]])
C1 被搜索的字符串
C2 希望搜索的字符串
I 搜索的开始位置,默认为1
J 第J次出现的位置,默认为1
instr('oracle traning','ra',1,2)=9
instr('重庆某软件公司','某',1,1)=3
23、在指定字符串中搜索指定子字符串
1个汉字算2个
INSTRB(C1,C2[,I[,J]])
instrb('重庆某软件公司','某',1,1)=5
24、字符串长度
1个汉字算1
LENGTH(c1)
length('高乾竞')=3
25、字符串长度
1个汉字算2个
LENGTH(c1)
lengthB('高乾竞')=6
length函数返回字符的个数,使用定义是给定的字符集来计算字符的个数
LENGTHB给出该字符串的byte
LENGTHC使用纯unicode
LENGTH2使用UCS2
LENGTH4使用UCS4
26、增长字符串长度到指定长度,不足在左边添加指定字符
LPAD(c1,n[,c2])
lpad('gao',10,'*')=*******gao 增长字符串gao为10位,不足在左边添加*
lpad('gao',2,'*')=go
26、增长字符串长度到指定长度,不足在右边添加指定字符
RPAD(c1,n[,c2])
RPAD('gao',10,'*')=gao******* 增长字符串gao为10位,不足在右边添加*
RPAD('gao',2,'*')=go
27、删除字符串左边的指定字符
LTRIM(c1,[,c2])
LTRIM(' gao qian jing',' ')=LTRIM(' gao qian jing')=gao qian jing
27、删除字符串右边的指定字符
RTRIM(c1,[,c2])
RTRIM(' gao qian jingXXXX','X')=gao qian jing
28、删除字符串左右两边指定字符串
TRIM(c1 from c2)
TRIM('X' from 'XXXgao qian jingXXXX')=gao qian jing
29、替换字符串中指定的子字符串为指定的子字符串
REPLACE(c1,c2[,c3])
replace('he love you','he','i')=i love you
30、字符串参数的语音表示形式
SOUNDEX(c1)
计算语音的算法:
1.保留字符串首字母,但删除a、e、h、i、o、w、y
2.将下表中的数字赋给相对应的字母
(1) 1:b、f、p、v
(2) 2:c、g、k、q、s、x、z
(3) 3:d、t
(4) 4:l
(5) 5:m、n
(6) 6:r
如果字符串中存在拥有相同数字的2个以上(包含2个)的字母在一起(例如b和f),或者只有h或w,则删除其他的,只保留1个
只返回前4个字节,不够用0填充
示例:
soundex('two'),soundex('too'),soundex('to'),他们的结果都是T000
soundex('cap'),soundex('cup'),他们的结果都是C100
soundex('house'),soundex('horse'),他们的结果都分别是H200,H620
31、截取字符串(1个汉字算1位)
SUBSTR(c1,n1[,n2])
substr('13088888888',3,8)=08888888,从第3位往后截取8位
32、截取字符串(1个汉字算2位)
SUBSTRB(c1,n1[,n2])
substrb('我手机13012345678',4,11)=机13012345
substrb('我手机13012345678',3,11)=手机1301234
33、根据指定字符串替代指定字符串中的指定内容(1个汉字算1位)
TRANSLATE(c1,c2,c3)
c1 希望被替换的字符或变量
c2 查询原始的字符集
c3 替换新的字符集,将c2对应顺序字符,替换为c3对应顺序字符
TRANSLATE('he love you','he','i')=i love you,,,1北京人,
TRANSLATE('重庆的人','重庆的','上海男')=上海男人 c1和c2重复的部分为‘重庆的’,并且出现在1,2,3位置
TRANSLATE('重庆的人','重庆的重庆','北京男士们')=北京男人 c1和c2重复的部分还是‘重庆的’,并且出现在1,2,3位置
TRANSLATE('重庆的人','重庆的重庆','1北京男士们')=1北京人 c1和c2重复的部分还是‘重庆的’,并且出现在1,2,3位置
TRANSLATE('重庆的人','1重庆的重庆','北京男士们')=京男士人 c1和c2重复的部分还是‘重庆的’,并且出现在2,3,4位置
34、获取当前日期
sysdate=2017-12-8
35、在当前时间基础上增加3个月
add_months(sysdate,3)=2018-3-8
36、获取当前月的最后一天
last_day(sysdate)=2017-12-31
37、两个日期之间的月份数
months_between(d1,d2)
sysdate=2008-11-5
months_between(sysdate,to_date('2006-01-01','YYYY-MM-DD'))=34.16
months_between(sysdate,to_date('2016-01-01','YYYY-MM-DD'))=-85.84
38、给出时间dt1在c1时区对应c2时区的日期和时间(不同时区的时间)
NEW_TIME(dt1,c1,c2)
大西洋标准时间:AST或ADT
阿拉斯加_夏威夷时间:HST或HDT
英国夏令时:BST或BDT
美国山区时间:MST或MDT
美国中央时区:CST或CDT
新大陆标准时间:NST
美国东部时间:EST或EDT
太平洋标准时间:PST或PDT
格林威治标准时间:GMT
Yukou标准时间:YST或YDT
to_char(sysdate,'yyyy.mm.dd hh24:mi:ss')=2017.12.8 11:10:55
to_char(new_time(sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss')=2017.12.8 18:10:55
39、给出日期d1按期间(参数c1)四舍五入后的期间的第一天日期,根据日期进行四舍五入
round(d1[,c1])
最近0点日期: 取消参数c1或j
最近的星期日:day或dy或d
最近月初日期:month或mon或mm或rm
最近季日期:q
最近年初日期:syear或year或yyyy或yyy或yy或y(多个y表示精度)
最近世纪初日期:cc或scc
round(sysdate) 最近0点日期,
round(sysdate,'day') 最近星期日,
round(sysdate,'month') 最近月初,
round(sysdate,'q') 最近季初日期,
round(sysdate,'year') 最近年初日期
40、返回指定日期节点所对应的时间
trunc(d1[,c1])
trunc(sysdate) 今天日期,
trunc(sysdate,'day') 本周星期日,
trunc(sysdate,'month') 本月初,
trunc(sysdate,'q') 本季初日期,
trunc(sysdate,'year') 本年初日期
41、给指定时间节点的日期,返回下周对应时间
next_day(d1[,c1])
next_day(sysdate,'星期一') 下周星期一,
next_day(sysdate,'星期二') 下周星期二,
next_day(sysdate,'星期三') 下周星期三,
next_day(sysdate,'星期四') 下周星期四,
next_day(sysdate,'星期五') 下周星期五,
next_day(sysdate,'星期六') 下周星期六,
next_day(sysdate,'星期日') 下周星期日
42、返回指定时间中的指定部分
extract(c1 from d1)
extract(hour from timestamp '2001-2-16 2:38:40 ' ) 小时, 返回小时
extract(minute from timestamp '2001-2-16 2:38:40 ' ) 分钟 返回分钟数
extract(second from timestamp '2001-2-16 2:38:40 ' ) 秒 返回秒数
extract(DAY from timestamp '2001-2-16 2:38:40 ' ) 日 返回对应天数
extract(MONTH from timestamp '2001-2-16 2:38:40 ' ) 月 返回对应月数
extract(YEAR from timestamp '2001-2-16 2:38:40 ' ) 年 返回对应年数
43、获取会话中的日期和时间
localtimestamp=14-11月-08 12.35.37.453000 上午
44、已timestamp格式获取当前时间
current_timestamp=14-11月-08 12.37.34.609000 上午 +08:00
45、获取当前日期
current_date=2008-11-14
46、获取当前时区
dbtimezone=:+00:00
47、获取当前会话时区
sessionTIMEZONE=+08:00
48、变动日期
Interval c1 set1
trunc(sysdate)+(interval '1' second), --加1秒(1/24/60/60)
trunc(sysdate)+(interval '1' minute), --加1分钟(1/24/60)
trunc(sysdate)+(interval '1' hour), --加1小时(1/24)
trunc(sysdate)+(INTERVAL '1' DAY), --加1天(1)
trunc(sysdate)+(INTERVAL '1' MONTH), --加1月
trunc(sysdate)+(INTERVAL '1' YEAR), --加1年
trunc(sysdate)+(interval '01:02:03' hour to second), --加指定小时到秒
trunc(sysdate)+(interval '01:02' minute to second), --加指定分钟到秒
trunc(sysdate)+(interval '01:02' hour to minute), --加指定小时到分钟
trunc(sysdate)+(interval '2 01:02' day to minute) --加指定天数到分钟
49、将varchar2格式转化为rowid值
chartorowid(c1)
chartorowid('AAAADeAABAAAAZSAAA')
50、将rowid值转化为varchar2格式
ROWIDTOCHAR(rowid)
51、字符串转化字符集
将源字符串c1 从一个语言字符集set2转换到另一个目的set1字符集
CONVERT(c1,set1,set2)
convert('strutz','we8hp','f7dec')=strutz
52、将16进制数转换为2进制数
HEXTORAW(c1)
HEXTORAW('A123')
53、将2进制数转换为16进制
RAWTOHEX(c1)
RAWTOHEX('010100')
54、将日期或数据类型转换为char类型
TO_CHAR(x[[,c2],C3])
x是一个date或number数据类型。
c2为格式参数
c3为NLS设置参数
如果x为日期nlsparm=NLS_DATE_LANGUAGE 控制返回的月份和日份所使用的语言。
如果x为数字nlsparm=NLS_NUMERIC_CHARACTERS 用来指定小数位和千分位的分隔符,以及货币符号。
NLS_NUMERIC_CHARACTERS ="dg", NLS_CURRENCY="string"
to_char(1210.73, '9999.9') 返回 '1210.7'
to_char(1210.73, '9,999.99') 返回 '1,210.73'
to_char(1210.73, '$9,999.00') 返回 '$1,210.73'
to_char(21, '000099') 返回 '000021'
to_char(852,'xxxx') 返回' 354'
to_char(sysdate,'d') 每周第几天
to_char(sysdate,'dd') 每月第几天
to_char(sysdate,'ddd') 每年第几天
to_char(sysdate,'ww') 每年第几周
to_char(sysdate,'mm') 每年第几月
to_char(sysdate,'q') 每年第几季
to_char(sysdate,'yyyy') 年
to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American')=monday
55、将字符串格式转换为日期格式
TO_DATE(X[,c2[,c3]])
to_date('199912','yyyymm'),
to_date('2000.05.20','yyyy.mm.dd'),
56、将字符串格式转换为数据格式
TO_NUMBER(X[[,c2],c3])
TO_NUMBER('199912')
TO_NUMBER('450.05')
57、将字符串中的半角转化为全角
TO_MULTI_BYTE(c1)
to_multi_byte('高A')=高A
58、将字符串中的全角转换为半角
to_single_byte(c1)
to_single_byte('高A')=高A
54、返回字符集名称参应id值
nls_charset_id(c1)
nls_charset_id('zhs16gbk')=852
55、返回字符集名称参应id值
nls_charset_name(n1)
nls_charset_name(852)=zhs16gbk
56、统计列平均数
AVG([distinct|all]x)
avg(sal)
57、统计列值之和
SUM([distinct|all]x)
SUM(sal)
58、统计数据表选中行x列的标准误差
STDDEV([distinct|all]x)
STDDEV(distinct sal)=3142.69366257674
STDDEV(all sal)=2565.99863039714
STDDEV(sal)=2565.99863039714
59、统计数据表选中行x列的方差
VARIANCE([distinct|all]x)
VARIANCE(distinct sal)=9876523.4568
VARIANCE(all sal)=6584348.9712
VARIANCE(sal)=6584348.9712
60、统计数据表选中行x列的合计值
count(*|[distinct|all]x)
count(*)=5
count(xm)=4
count(all xm)=4
count(distinct sal)=3
count(all sal)=5
count(sal)=5
61、列中最大值
MAX([distinct|all]x)
MAX(distinct sal)=5555.55
MAX(xm)=zhu
62、列中最小值
MIN([distinct|all]x)
MIN(distinct sal)=0
MIN(xm)=gao