|
发表于 2011-10-24 10:50:33
|
显示全部楼层
本帖最后由 iserich 于 2011-10-24 10:52 编辑
菜鸟发布。。。。请各位大侠指教。
参考英文官网论坛帖子,
http://codeigniter.com/forums/viewthread/122798
修改system/database/drivers/mssql/mssql_drive.php中的 _limit函数
PHP复制代码 function _limit ($sql, $limit, $offset)
{
$str=strtolower(str_replace("\n",' ',$sql));
//表名
$strtemp=substr($str,strpos(strtolower($str),'from ')+5);
$tablename=substr($strtemp,0,stripos($strtemp,' '));
///排序
$orderby=substr($str,strpos(strtolower($str),'order by ')+9);
//查询条件 (未考虑group by 及其他情况)
if(strpos(strtolower($str),'where ')){
$where=substr($str,strpos(strtolower($str),'where ')+6, strpos(strtolower($str),'order by ')-strpos(strtolower($str),'where ')-6);
if($where)$where='where '.$where;
}
$sql = "
SELECT *
FROM
( SELECT *, ROW_NUMBER() OVER (ORDER BY $orderby) as NroFila
FROM $tablename $where
) AS PAG_TABLEXXX
WHERE
NroFila BETWEEN ".($offset? $offset+1:1)." AND ".($offset+$limit)."
";
return $sql;
} 复制代码
未测试效率---理论上简单实现,未仔细测试
本人绝对小菜一名,水平有限,求优化! |
|