几种数据库比较,Oracle,SQLServer,Symfoware,DB2,SYBASE

发布时间:

函数比较:
分类名
单行的函数
数值函数字符函数日期函数变换函数其它函数
统计函数
数学函数:
Function
ArctangentofnandmSmallestinteger>=valueHyperboliccosineNaturallogarithmLogarithm,anybaseLogarithm,base10Modulus(remainderRandomnumberHyperbolicsineHyperbolictangentTruncate
LargestnumberinlistSmallestnumberinlistConvertnumberifNULLLargestintegernumber四舍五入
Oracle
ATAN2CEILCOSHLNLOG(NLOG(10MODN/ASINHTANHTRUNCGREATESTLEASTNVLFloorRound
要点:
1.由于各种数据库判断Null的方法不同,所以开发时对应DBMS分开处理。DBMS支持SQL92规定的SQL函数coalesce(时这些操作都封装在getNvlSqlString(StringstrColName,StringstrDefaultValue中,用这个方法可得到相应数据库处2.Symfoware数据库中没有取余函数,可以使用castfloor组合来取余,例如:cast(empno-floor(empno/3*3asint字符函数:
Function
字串连接
把ASCII转换为字符
返回字符串中的开始字符(左起)填充字符串的左边
字符串中的起始模式(pattern)多次重复字符串重复空格的字串
从数字数据转换为字符数据子串
替换字符
将字串中的每个词首字母大写翻译字符串字符串长度
列表中最大的字符串列表中最小的字符串
CONCATCHRINSTRLPADINSTRRPADRPADTO_CHARSUBSTRREPLACEINITCAPTRANSLATELENGTHGREATESTLEAST
Oracle

如果为NULL则转换字串把字符串变为日期把字符变为数字NVL
To_dateTo_number
要点:
1.由于各种数据库判断Null的方法不同,所以开发时对应DBMS分开处理。DBMS支持SQL92规定的SQL函数coalesce(时这些操作都封装在getNvlSqlString(StringstrColName,StringstrDefaultValue中,用这个方法可得到相应数据库处2.注意oracle中取字符子串的方法名与其他数据库不一样日期函数:
Function
日期相加两个日期的差
Oracle
(date_column+/-value
ADD_MONTHS(date_column,value(datecolumn+/-valueorMONTHS_BETWEENSYSDATE
当前日期和时间一个月的最后一天时区转换
日期后的第一个周日代表日期的字符串代表日期的整数
日期舍入日期截断
字符串转换为日期
如果为NULL则转换日期
日期的取整(四舍五入中的舍)
LAST_DAYNEW_TIMENEXT_DAYTO_CHARTO_NUMBER(TO_CHARROUNDTRUNCTO_DATENVLrngc
要点:
1.由于各种数据库判断Null的方法不同,所以开发时对应DBMS分开处理。DBMS支持SQL92规定的SQL函数coalesce(时这些操作都封装在getNvlSqlString(StringstrColName,StringstrDefaultValue中,用这个方法可得到相应数据库处
2.各种数据库得到系统时间的方法不同,所以开发时对应DBMS分开处理。Symfoware数据库中,
current_date--系统日期;current_time--系统时间;current_timestamp--系统日期和时间
这些形式都封装在getSysdateName(中,用这个方法可得到相应数据库的系统时间方法
3.各种数据库对日期加减计算的表示是不同的,所以开发时对应DBMS分开处理。这些表现形式都封装在getAddDay用这个方法可以得到相应数据库的日期加减方法的表示
转换函数:
Function
数字转换为字符字符转换为数字日期转换为字符字符转换为日期16进制转换为2进制2进制转换为16进制
Oracle
TO_CHARTO_NUMBERTO_CHARTO_DATEHEX_TO_RAWRAW_TO_HEX

要点:
各种数据库中类型转换方法可通过PreparedStatement.setXXX(做成不依靠DBMS的处理.
其他单行函数:
Function
返回第一个非空表达式当前序列值下一个序列值
如果exp1=exp2,返回null用户登录账号ID数字用户登录名
用户数据库ID数字用户数据库名
用户环境(audittrail在CONNECTBY子句中的级别
Oracle
DECODECURRVALNEXTVALDECODEUIDUSERUIDUSERUSERENVLEVEL
统计函数:
Function
StandarddeviationVariance统计行数
Oracle
STDDEVVARIANCEcount
要点:
1.SymfoWARE中,使用统计函数count时,不能够使用"count(1"这样的形式,必须做成"count(*"

补充
返回数值的函数的集合返回字符的函数的集合操作日期用的函数的集合类型变换的函数的集合以上不能分类的函数的集合
统计函数的集合
MicrosoftSQServer
ATN2CEILINGCOTLOGN/ALOG10
USEMODULO(%OPERATORRANDN/AN/AN/AN/AN/AISNULLFloorCONVERT
N/ACEILN/AN/AN/AN/A
CAST,FLOORN/AN/AN/ATRUNCN/AN/A
CoalesceFloorround
Symfoware
BMS分开处理。DBMS支持SQL92规定的SQL函数coalesce(时,使用该方法。但Oracle中使用nvl方法。ngstrDefaultValue中,用这个方法可得到相应数据库处理Null值的语句组合来取余,例如:cast(empno-floor(empno/3*3asint
MicrosoftSQServer
(expression+expressionCHAR
CHARINDEXN/A
PATINDEXREPLICATESPACESTR
SUBSTRINGSTUFFN/AN/A
DATELENGTHorLENN/AN/ASymfoware
(expression||expressionN/A
positionLPAD
positionrpadN/AN/A
SUBSTRINGREPLACEN/AN/AlengthN/AN/A

ISNULLCONVERTCONVERTCoalesceCnv_datecast
BMS分开处理。DBMS支持SQL92规定的SQL函数coalesce(时,使用该方法。但Oracle中使用nvl方法。ngstrDefaultValue中,用这个方法可得到相应数据库处理Null值的语句
MicrosoftSQServer
DATEADD(type,value,column_nameDATEDIFFGETDATE(
Symfoware
column_name+/-INTERVAL'2'typeSpan_date
Current_timestampCurrent_dateCurrent_timeLast_dayN/AN/A
Cnv_charN/AN/AROUNDN/AN/A
CoalesceTrunc-date
N/AN/AN/A
DATENAMEDATEPARTCONVERTCONVERTCONVERTISNULLCONVERT
BMS分开处理。DBMS支持SQL92规定的SQL函数coalesce(时,使用该方法。但Oracle中使用nvl方法。ngstrDefaultValue中,用这个方法可得到相应数据库处理Null值的语句
DBMS分开处理。
相应数据库的系统时间方法
时对应DBMS分开处理。这些表现形式都封装在getAddDaySqlString(StringstrColName,intnValue中,
MicrosoftSQServer
CONVERTCONVERTCONVERTCONVERTCONVERTCONVERT
N/Acast
Cnv_charCnv_dateN/AN/A
Symfoware

XX(做成不依靠DBMS的处理.
MicrosoftSQServer
COALESCEN/AN/ANULLIFSUSER_IDSUSER_NAMEUSER_IDUSER_NAMEN/AN/A
N/A
NEXTVAL
Symfoware
MicrosoftSQServer
STDEVorSTDEVPVARorVARPcount
Symfoware
N/AN/Acount
ount(1"这样的形式,必须做成"count(*"

DB2
CEILLOG(NLOG(10MODRAND
ATN2CEILINGCOTLOGLOG(NLOG10MODRANDASINATAN
SYBASE
TRUNC
CoalesceFloorRoundISNULLFloorRound
DB2
CONCATCHRINSTRINSTRREPEATSPACEcharSUBSTRREPLACEupperLENGTH
CHAR
CHARINDEXPATINDEXREPLICATESPACEchar
SUBSTRINGREPLACEupperDATELENGTH
SYBASE

coalesce
date,time,timestampCONVERTdecimal,double,Integer,smaCONVERT
DB2
(date_column+/-value
SYBASE
dateadd(datepart,number,date_expr
(datecolumn+/-valueordatediff(datepart,date_expr1,date_expr2MONTHS_BETWEENCurrenttimestampGETDATE(CurrentdateCurrenttimeLAST_DAY
CHARCHARROUNDTRUNCDATE
Coalesce
DATENAMEDATEPARTCONVERTCONVERTCONVERTISNULLCONVERT
DB2
charCONVERTdecimal,double,Integer,smaCONVERTcharCONVERTdate,time,timestampCONVERTN/ACONVERTHexCONVERT
SYBASE

DB2
COALESCE
COALESCE
SYBASE
VALUESCURRENTUSERVALUESCURRENTSERVER
NULLIFUSER_IDUSER_NAMEDB_IDDB_NAME
DB2SYBASE
count(*count

几种数据库比较,Oracle,SQLServer,Symfoware,DB2,SYBASE

相关推荐