如何分割数字范围并计算总范围?

时间:2015-12-16 07:06:56

标签: mysql sql database select substring

我想从表pages

中的数据库列articles中获取页面范围
|article_id|pages|

    1       41-47
    2       60-61

输出用于文章ID 1:

<fpage>41</fpage>
<lpage>47</lpage>

这是我的代码:

$page = mysqli_query($con,"SELECT pages FROM articles WHERE article_id='1'")  or die(mysql_error());

while($page2=mysqli_fetch_array($page))
 {
    result = preg_replace_callback('/(\d+)-(\d+)/', function($m)
   {
        return implode(',', range($m[1], $m[2]));
    }, $page2);

    $page3 = explode(',', $result['pages']);
    $xml .= '<fpage>'.$page3[0].'</fpage>';
    $xml .= '<lpage>'.$page3[6].'</lpage>';

}

我设法使用array [6]获取第1条的最后一页。那么如何处理可能有不同范围的文章呢?而且,我想计算页面范围

对于第1条,总页面范围(41-47)是6,但我不知道该怎么做。非常感谢您的帮助。谢谢:))

1 个答案:

答案 0 :(得分:3)

使用SUBSTRING_INDEX()函数拆分字符串:

试试这个:

SELECT SUBSTRING_INDEX(pages, '-', 1) AS fpage, 
       SUBSTRING_INDEX(pages, '-', -1) AS lpage, 
      (SUBSTRING_INDEX(pages, '-', -1) - SUBSTRING_INDEX(pages, '-', 1)) AS pageRange
FROM articles 
WHERE article_id = '1';