当前位置:数据库 > Oracle >>

sybase与oracle区别之Sql语法篇


sybase与oracle区别之Sql语法篇
 
1、对null和空字符串的处理 
Oracle:没有空字符串,如果你将某值赋值为空字符,oracle会自动存成null 
Sybase: 区别空字符串和null 
如果想查询某个字段不为空的数据 
 
sybase可以写为:   www.zzzyk.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.zzzyk.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'
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,