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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值