设为首页 加入收藏

TOP

Oracle,mysql,sqlserver,postgresql语句几点比较
2015-07-24 12:01:13 来源: 作者: 【 】 浏览:19
Tags:Oracle mysql sqlserver postgresql 语句 比较

1.分页

Oracle: SELECT * FROM(SELECT A.*, ROWNUM RN FROM (select T.* from sj_receiptinfo t WHERE t.TAXNO LIKE CONCAT('%', CONCAT(?, '%')) order by t.id desc) A WHERE ROWNUM <= ?)WHERE RN > ?

mysql select * from tableName where 条件 limit (当前页码*页面容量-1) , 页面容量pagesize

sqlServer: SELECT w2.n, w1.* FROM ARTICLE w1,(   SELECT TOP 1030 row_number() OVER (ORDER BY YEAR DESC, ID DESC) n, ID FROM ARTICLE) w2 WHERE w1.ID = w2.ID AND w2.n > 1000 ORDER BY w2.n ASC

postgresql:select * from xxx limit pagesize offset offsetNum ;

pagesize是固定的,即每页显示多少记录。offsetNum=(当前页数-1)*pagesize

2.查询头5条记录

OracleSELECT * FROM PersonsWHERE ROWNUM <= 5

mysql:		SELECT * FROM Persons LIMIT 5
sqlServer:	SELECT TOP 2 * FROM Persons
postgresql:SELECT * FROM Persons LIMIT 5;跟mysql一样


3.模糊查询
Oracle:select T.* from sj_receiptinfo t WHERE t.TAXNO LIKE CONCAT('%', CONCAT(?, '%')) 
mysql:select T.* from sj_receiptinfo t WHERE t.TAXNO LIKE CONCAT('%', ?, '%') 

sqlServer:
select T.* from sj_receiptinfo t WHERE t.TAXNO LIKE ‘%%’
postgresql:select *,( T .类别代码 || '-' || T .发票号码 ) AS 号码 from account where username ~* 'baidu';
找出数据表account中所有用户名包含baidu且不区分大小写的用户的信息
4.判断null
Oracle:SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))FROM Products
mysql:SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))FROM Products
sqlServer:SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))FROM Products
postgresql:SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))FROM Products
5.插入数据
Oracle:insert into company(id,name,parentid,ccdm) values(COMPANY_SEQ.NEXTVAL,?,?,?)序列
mysql:insert into person(fullName,companyName) values(?,?) 因为ID是自动增长auto_increment
6.查询最大id
Oracle:SELECT NVL(MAX(ID),0)+1 FROM REPOT_BS

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle中函数如何返回结果集 下一篇ORACLE按表字段值的不同统计数量

评论

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