欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

sql规范告诫 解决兼容性有关问题 经验记录

更新时间: 2014-01-05 02:07:22 责任编辑: Author_N1

 

sql规范告诫 解决兼容性问题 经验记录

1:sqlserver2008与mysql兼容性问题2:groupby   组函数

       group by:别给我这么写select * from T_STANDARD_SYSTEM group by SYSTEM_ID order by SYSTEM_ID虽然mysql支持但是大部分数据库不支持,更改数据库时能

       搞死人。可以将*中的每一项用max()函数包围起来。

2:sqlserver2008与mysql兼容性问题2:order by groupby   组函数

      select COUNT(*) from T_ASSESS_ASSIGN order by ID在sqlserver中行不通,消息 8127,级别 16,状态 1,第 1 行
       ORDER BY 子句中的列 "T_ASSESS_ASSIGN.ID" 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

       select COUNT(*) from T_ASSESS_ASSIGN这个可以。select COUNT(*) from T_ASSESS_ASSIGN group by id order by ID这个也可以。

      也就是在sqlserver中有order by 有聚合函数就必须有groupby

      而在mysql中两条都行的通。

3:sqlserver2008与mysql兼容性问题3:排序问题

     select * from ( select *  ,ROW_NUMBER() as rowNum from T_SYS_MESSAGE   where 1=1  and USER_TO = ? and USER_ID = ? order by state desc,send_time desc) as temp where temp.rowNum between 0 and 10];'ROW_NUMBER' 附近有语法错误,需要 'OVER'

使用例子:

public Page find(String arg0, Object[] params, int pageSize, int curPage) {
        String sql = "select count(*) " + arg0.substring(arg0.indexOf("from"));
        //用于sqlserver分页时的over函数。如果sql中不带排序则按自然顺序排序,否则按原来的排序方式。
        String tem = "order by 1";
        if(sql.contains("order") || sql.contains("ORDER")){
            sql = sql.substring(0,sql.toLowerCase().indexOf("order"));
            tem = arg0.substring(arg0.toLowerCase().indexOf("order"));
        }

===============================================================

if("sqlserver".equals(dbType.trim().toLowerCase())){
            arg0 = "select * from ( " + arg0.substring(0,arg0.indexOf("from")) +  
            " ,ROW_NUMBER() " + "OVER(" + tem + ") as rowNum "
            + arg0.substring(arg0.indexOf("from")) + ") as temp where temp.rowNum between "
            + pageSize * (curPage -1) + " and " + pageSize * curPage;
            System.out.println("++++++++++" + arg0);
        }


上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:07:22
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/5872/
本文WWW.DOC100.NET DOC100.NET版权所有。