设为首页 加入收藏

TOP

sybase与oracle区别之Sql语法篇
2014-11-23 22:38:08 来源: 作者: 【 】 浏览:8
Tags:sybase oracle 区别 Sql 语法

sybase与oracle区别之Sql语法篇
1、对null和空字符串的处理
Oracle:没有空字符串,如果你将某值赋值为空字符,oracle会自动存成null
Sybase: 区别空字符串和null
如果想查询某个字段不为空的数据
sybase可以写为: www.2cto.com
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
www.2cto.com
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'
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Sybase解决数据库锁死问题 下一篇Sybase IQ锁表以及解除锁定

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: