资源描述:
《PSQL和TSQL的区别》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、PL-SQL和T-SQL的区别(转载)ORACLEPL/SQL与SQLSERVERT-SQL一些比较字符串连接Oracle用
2、
3、符号作为连接符,而SQLServer的连接符是加号:+。Oracle查询如下所示:Select‘Name’
4、
5、‘LastName’FromtableNameSQLServer查询如下:Select‘Name’+‘LastName’GUIDOracle用SYS_GUID()生成GUID,不含{}和-;getregguidstring生成GUID含{}和-;SQLServer用NEWID生成GUID; 数字取舍O
6、racle数据库内有一个TRUNC函数,该函数返回m位十进制数的n位;如果省略m则n就是0位。m的值可以为负,表示截去小数点左边m位数字。在SQLServer下可以用Round或者Floor。Oracle查询如下所示:SELECT TRUNC(15.79,1)"Truncate"FROMDUAL;SQLServer查询如下:SELECTROUND(15.79,0)rounded,ROUND(15.79,0,1)truncated SELECTFLOOR(ROUND
7、(15.79,0)),FLOOR(ROUND(15.79,0,1))数字转换Oracle的TO_CHAR函数可以把n位NUMBER数据类型转换为VARCHAR2数据类型,同时采用可选的数字格式。SQLServer则通过STR函数返回数字转换之后的字符数据。不过,该函数不具方便的Format参数。Oracle查询如下所示:SELECTto_char(123.45,99999999999999)fromtab SELECTto_char(EXPIRY_DATE,'DDM
8、ONYYYY')fromtabSQLServer查询如下:SELECTSTR(123.45,14) SELECTSTR(round(123.455,2),12,2) SELECTCAST(REPLACE((CONVERT(varchar(12),EXPIRYDATE,106)),'','')asvarchar(9))LENGTH和LENOracle查询如下所示:SELECTLENGTH('SQ
9、LMAG')"Lengthincharacters"FROMDUAL;SQLServer查询如下:SELECTLEN('SQLMAG')"Lengthincharacters"日期两种系统都具有各自的当前日期和时间格式。Oracle取得日期和采用如下方式:SYSDATESQLServer则是这样的:GETDATE()你可以用各种语法操作日期。以下的代码对Oracle日期值中的月份进行了格式调整(返回日期再加上n月):Select add_months(sysdate,12)fromdualSQLServer则是如下完成同等功能的:Se
10、lectdateadd(mm,12,getdate())数据的减法也不同。Oracle中直接对数据进行减法操作:SELECTsysdate-add_months(sysdate,12)FROMdualSQLServer则是这样做的:SELECT datediff(dd,GetDate(),dateadd(mm,12,getdate()))执行查询时PLSQL执行查询的时候,FROM子句是必须的,而SQLSERVER不一定如ORACLE中select2*5fromdual而SQLSERVER中select2*5 更新语句的区别SQLse
11、rver与Oralce中的两表关联更新是区别的。在T-SQL中更新相对简单些,直接用下面的语句都是可以:UpdatebSetb.processflag=a.processflagFromtemp_1aJointemp_2bOna.msgid_db=b.msgidUpdatetemp_2SetUsertime=b.UsertimeFromtemp_2aJointemp_1bOna.msgid=b.msgid_dbUpdatetemp_2SetUsertime=b.UsertimeFromtemp_1bwheremsgid=b.msgid_
12、db而在Oracle中这样写是不对的,应该更改如下:UpdateTemp_2a Seta.Usertime=(Selectb.Usertime FromTemp_1b