首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问一个SQL语句替换有关问题,

2012-06-15 
请教一个SQL语句替换问题,在线等!!!!!做一个分页的。想把形如:SELECT u.id,u.name FROM user as u ORDER BY

请教一个SQL语句替换问题,在线等!!!!!
做一个分页的。
想把形如:

SELECT u.id,u.name FROM user as u ORDER BY u.id DESC LIMIT 0 10
SELECT u.id,u.name FROM user as u WHERE u.id=12 ORDER BY u.id DESC

替换成

SELECT COUNT(*) FROM user as u ORDER BY u.id DESC LIMIT 1
SELECT COUNT(*) FROM user as u WHERE u.id=12 ORDER BY u.id DESC LIMIT 1


也就是形式如

SELECT xxxxx FROM ***** WHERE ***** ORDER BY **** LIMIT XXXXX
SELECT xxxxx FROM ***** WHERE ***** ORDER BY **** 

其中 XXXXX 部分进行替换。



PHP 怎么写正则。。。

[解决办法]

PHP code
$str="SELECT u.id,u.name FROM user as u WHERE u.id=12 ORDER BY u.id DESC limit 10";echo preg_replace("/^(select ).+? (from .+?)(limit (\d{1,}(\,\d{1,})?))?$/i","\\1 count(*) \\2 limit 1;",$str);
[解决办法]
<?php

$str="SELECT u.id,u.name FROM user as u WHERE u.id=12 ORDER BY u.id DESC limit 1,10";
echo preg_replace("/^(select ).+ (from.+?)( limit [0-9\,]+){0,1}$/i","\\1 count(*) \\2 limit 1",$str);
echo "<br />";
$str="SELECT u.id,u.name FROM user as u WHERE u.id=12 ORDER BY u.id DESC";
echo preg_replace("/^(select ).+ (from.+?)( limit [0-9\,]+){0,1}$/i","\\1 count(*) \\2 limit 1",$str);
?>

热点排行