Oracle和SQL Server的一些区别函数和存储过程Word格式文档下载.docx
《Oracle和SQL Server的一些区别函数和存储过程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Oracle和SQL Server的一些区别函数和存储过程Word格式文档下载.docx(14页珍藏版)》请在冰点文库上搜索。
selectpower(3,4)value81
selectpower(3,4)valuefromdual81
12.取随机数
selectrand()value
selectsys.dbms_random.value(0,1)valuefromdual;
13.取符号
selectsign(-8)value-1
selectsign(-8)valuefromdual-1
----------数学函数
14.圆周率
SELECTPI()value3.1415926535897931
不知道
15.sin,cos,tan参数都以弧度为单位
例如:
selectsin(PI()/2)value得到1(SQLServer)
16.Asin,Acos,Atan,Atan2返回弧度
17.弧度角度互换(SQLServer,Oracle不知道)
DEGREES:
弧度-〉角度
RADIANS:
角度-〉弧度
---------数值间比较
18.求集合最大值
selectmax(value)valuefrom
(select1value
union
select-2value
select4value
select3value)a
selectgreatest(1,-2,4,3)valuefromdual
19.求集合最小值
selectmin(value)valuefrom
selectleast(1,-2,4,3)valuefromdual
20.如何处理null值(F2中的null以10代替)
selectF1,IsNull(F2,10)valuefromTbl
selectF1,nvl(F2,10)valuefromTbl
--------数值间比较
21.求字符序号
selectascii('
a'
)value
)valuefromdual
22.从序号求字符
selectchar(97)value
selectchr(97)valuefromdual
23.连接
select'
11'
+'
22'
33'
value
selectCONCAT('
'
)¦
¦
33valuefromdual
23.子串位置--返回3
selectCHARINDEX('
s'
sdsq'
2)value
selectINSTR('
2)valuefromdual
23.模糊子串的位置--返回2,参数去掉中间%则返回7
selectpatindex('
%d%q%'
sdsfasdqe'
oracle没发现,但是instr可以通过第四霾问刂瞥鱿执问?
BR>
selectINSTR('
sd'
1,2)valuefromdual返回6
24.求子串
selectsubstring('
abcd'
2,2)value
selectsubstr('
2,2)valuefromdual
25.子串代替返回aijklmnef
SELECTSTUFF('
abcdef'
2,3,'
ijklmn'
SELECTReplace('
'
bcd'
26.子串全部替换
没发现
selectTranslate('
fasdbfasegas'
fa'
我'
)valuefromdual
27.长度
len,datalength
length
28.大小写转换lower,upper
29.单词首字母大写
selectINITCAP('
abcddsafdf'
30.左补空格(LPAD的第一个参数为空格则同space函数)
selectspace(10)+'
selectLPAD('
14)valuefromdual
31.右补空格(RPAD的第一个参数为空格则同space函数)
+space(10)value
selectRPAD('
32.删除空格
ltrim,rtrim
ltrim,rtrim,trim
33.重复字符串
selectREPLICATE('
34.发音相似性比较(这两个单词返回值一样,发音相同)
SELECTSOUNDEX('
Smith'
),SOUNDEX('
Smythe'
)
)fromdual
SQLServer中用SELECTDIFFERENCE('
Smithers'
Smythers'
)比较soundex的差
返回0-4,4为同音,1最高
--------------日期函数
35.系统时间
selectgetdate()value
selectsysdatevaluefromdual
36.前后几日
直接与整数相加减
37.求日期
selectconvert(char(10),getdate(),20)value
selecttrunc(sysdate)valuefromdual
selectto_char(sysdate,'
yyyy-mm-dd'
38.求时间
selectconvert(char(8),getdate(),108)value
selectto_char(sysdate,'
hh24:
mm:
ss'
39.取日期时间的其他部分
DATEPART和DATENAME函数(第一个参数决定)
to_char函数第二个参数决定
参数---------------------------------下表需要补充
yearyy,yyyy
quarterqq,q(季度)
monthmm,m(mO无效)
dayofyeardy,y(O表星期)
daydd,d(dO无效)
weekwk,ww(wkO无效)
weekdaydw(O不清楚)
Hourhh,hh12,hh24(hh12,hh24S无效)
minutemi,n(nO无效)
secondss,s(sO无效)
millisecondms(O无效)
----------------------------------------------
40.当月最后一天
selectLAST_DAY(sysdate)valuefromdual
41.本星期的某一天(比如星期日)
SELECTNext_day(sysdate,7)vauleFROMDUAL;
42.字符串转时间
可以直接转或者selectcast('
2004-09-08'
asdatetime)value
SELECTTo_date('
2004-01-0522:
09:
38'
yyyy-mm-ddhh24-mi-ss'
)vauleFROMDUAL;
43.求两日期某一部分的差(比如秒)
selectdatediff(ss,getdate(),getdate()+12.3)value
直接用两个日期相减(比如d1-d2=12.3)
SELECT(d1-d2)*24*60*60vauleFROMDUAL;
44.根据差值求新的日期(比如分钟)
selectdateadd(mi,8,getdate())value
SELECTsysdate+8/60/24vauleFROMDUAL;
45.求不同时区时间
SELECTNew_time(sysdate,'
ydt'
gmt'
)vauleFROMDUAL;
-----时区参数,北京在东8区应该是Ydt-------
ASTADT大西洋标准时间
BSTBDT白令海标准时间
CSTCDT中部标准时间
ESTEDT东部标准时间
GMT格林尼治标准时间
HSTHDT阿拉斯加—夏威夷标准时间
MSTMDT山区标准时间
NST纽芬兰标准时间
PSTPDT太平洋标准时间
YSTYDTYUKON标准时间
Oracle支持的字符函数和它们的MicrosoftSQLServer等价函数:
函数OracleMicrosoftSQL Server
把字符转换为ASCIIASCIIASCII
字串连接CONCAT(expression+expression)
把ASCII转换为字符CHRCHAR
返回字符串中的开始字符(左起)INSTRCHARINDEX
把字符转换为小写LOWERLOWER
把字符转换为大写UPPERUPPER
填充字符串的左边LPADN/A
清除开始的空白LTRIMLTRIM
清除尾部的空白RTRIMRTRIM
字符串中的起始模式(pattern)INSTRPATINDEX
多次重复字符串RPADREPLICATE
字符串的语音表示SOUNDEXSOUNDEX
重复空格的字串RPADSPACE
从数字数据转换为字符数据TO_CHARSTR
子串SUBSTRSUBSTRING
替换字符REPLACESTUFF
将字串中的每个词首字母大写INITCAPN/A
翻译字符串TRANSLATEN/A
字符串长度LENGTHDATELENGTHorLEN
列表中最大的字符串GREATESTN/A
列表中最小的字符串LEASTN/A
如果为NULL则转换字串NVLISNULL
日期函数
日期相加(datecolumn+/-value)or
ADD_MONTHSDATEADD
两个日期的差(datecolumn+/-value)or
MONTHS_BETWEENDATEDIFF
当前日期和时间SYSDATEGETDATE()
一个月的最后一天LAST_DAYN/A
时区转换NEW_TIMEN/A
日期后的第一个周日NEXT_DAYN/A
代表日期的字符串TO_CHARDATENAME
代表日期的整数TO_NUMBER
(TO_CHAR))DATEPART
日期舍入ROUNDCONVERT
日期截断TRUNCCONVERT
字符串转换为日期TO_DATECONVERT
如果为NULL则转换日期NVLISNULL
转换函数
数字转换为字符TO_CHARCONVERT
字符转换为数字TO_NUMBERCONVERT
日期转换为字符TO_CHARCONVERT
字符转换为日期TO_DATECONVERT
16进制转换为2进制HEX_TO_RAWCONVERT
2进制转换为16进制RAW_TO_HEXCONVERT
其它行级别的函数
返回第一个非空表达式DECODECOALESCE
当前序列值CURRVALN/A
下一个序列值NEXTVALN/A
如果exp1=exp2,返回nullDECODENULLIF
用户登录账号ID数字UIDSUSER_ID
用户登录名USERSUSER_NAME
用户数据库ID数字UIDUSER_ID
用户数据库名USERUSER_NAME
当前用户CURRENT_USERCURRENT_USER
用户环境(audittrail)USERENVN/A
在CONNECTBY子句中的级别LEVELN/A
合计函数
AverageAVGAVG
CountCOUNTCOUNT
MaximumMAXMAX
MinimumMINMIN
StandarddeviationSTDDEVSTDEVorSTDEVP
SummationSUMSUM
VarianceVARIANCEVARorVARP
Oracle还有一个有用的函数EXTRACT,提取并且返回日期时间或时间间隔表达式中特定的时间域:
EXTRACT(YEARFROM日期)
存储过程
一.多表连接查询,更新存储过程
Sql存储过程
ALTERPROCEDURE[dbo].[GetEvent]
@SCSWIdnvarchar(20)=null,
@ToDateDATETIME,
@FromDateDATETIME
AS
SELECTNOTES.NOTE_ID,
NOTES.NOTE,
SCSW_CALENDAR.DATE_TIME
FROMSCSW_CALENDAR
LEFTOUTERJOINNOTESONSCSW_CALENDAR.NOTE_ID=notes.note_id
WHERESCSW_CALENDAR.SCSW_ID=SCSWId
ORDERBYPatient.PatientId
Oracel存储过程
1.查询数据的存储过程
PROCEDUREGetEvent(SCSWIdINVARCHAR2,FromDateINDATE,ToDateINDATE,refOutOUTrefcursor)
IS
BEGIN
OPENrefOutFOR
selectNOTES.NOTE_ID,
fromSCSW_CALENDAR
leftjoinNOTESonSCSW_CALENDAR.NOTE_ID=notes.note_id
whereSCSW_CALENDAR.SCSW_ID=SCSWId
ANDSCSW_CALENDAR.DATE_TIME>
=FromDate
ANDSCSW_CALENDAR.DATE_TIME<
ToDate
orderbySCSW_CALENDAR.DATE_TIME;
ENDGetEvent;
2.更新数据的存储过程:
procedureUpdateArticlesubmodel
(
ArticleSubIDnumber,
ArticleTitlenvarchar2,
ArticleKeyWordnvarchar2,
ArticleContentCLOB,
CreatePersonnvarchar2,
ChangeDatedate,
SetTopnumber,
ArticleSubStyleIDnumber,
Checkednumber
as
begin
update"
ArticleSubModel"
set"
ArticleTitle"
=ArticleTitle,
"
ArticleKeyWord"
=ArticleKeyWord,
ArticleContent"
=ArticleContent,
CreatePerson"
=CreatePerson,
CreateDate"
=ChangeDate,
SetTop"
=SetTop,
ArticleSubStyleID"
=ArticleSubStyleID,
Checked"
=Checked
where"
ArticleSubID"
=ArticleSubID;
commit;
Exceptionwhenothersthen
rollback;
endUpdateArticlesubmodel;
3.删除数据的存储过程
procedureDeleteArticlesubmodel
ArticleSubIDnumber
deletefrom"
ArticleSubAccessories"
endDeleteArticlesubmodel;
编后:
如果您认为有侵权的地方,请来信说明,本人将立即删去。