国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 数据库 > sybase > sybase与oracle区别之Sql语法篇

sybase与oracle区别之Sql语法篇

来源:程序员人生   发布时间:2013-12-30 02:55:07 阅读次数:4341次


sybase与oracle区别之Sql语法篇

 

1、对null和空字符串的处理 

Oracle:没有空字符串,如果你将某值赋值为空字符,oracle会自动存成null 

Sybase: 区别空字符串和null 

如果想查询某个字段不为空的数据 

 

sybase可以写为:    

select * from table where (columA is not null and columA <>'') 

但是oracle如果这样写,是任何值都查询不到的。因为不管culumA是否为null, 

columA <>''或者columA='' 永远返回false, 

可以这样写:select * from table where columA is not null 

总结在oracel中可以取消对空串的考虑。特别是兼容两种数据库的程序应注意这一点。 

另:A<>'delete' 这里不包含null,应改写为 (A<>'delete' or A is null) 

 

2、update select 

在 SQL 中,表连接(left join、right join、inner join 等)常常用于 select 语句,其实在 SQL 语法中,这些连接也是可以用于 update 和 delete 语句的,在这些语句中使用 join 还常常得到事半功倍的效果。 

Update T_OrderForm SET T_OrderForm.SellerID =B.L_TUserID 

FROM T_OrderForm A LEFT JOIN T_ProductInfo   B ON B.L_ID=A.ProductID 

   

oracle: 

UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID) WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID) 

 

sybase: 

UPDATE table_A  SET a.A1 = b.B1, a.A2 = b.B2, a.A3 = b.B3  FROM table_A a JOIN table_B  b ON a.ID = b.ID and a.name='XXX' and b.B2='XXX'

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生