开发者

Select where first character is number

I'm trying to organize my content by the first character. By now, I did something like this:

PHP:

$first_char = $_GET['search'];
$sql = "SELECT id
        FROM table
        WHERE SUBSTR(title,1,1) = '".$first_char."'"
....

HTML:

<a href="?search=a">[A]</a>
<a href="?search=b">[B]</a>
...
<a href="?search=z">[Z]</a>
<a href开发者_如何学编程="?search=nr">[#]</a>

The thing is that when [A] is clicked, it shows titles starting with "A". What I want to do is when [#] is clicked, it should show all the posts starting with a number. So, when $_GET = 'nr' it shows all the titles starting with a number... I tried to do this with array(), but I failed.

Do you have any suggestions?


$sql = "SELECT id
        FROM table
        WHERE SUBSTR(title,1,1) in (1,2,3,4,5,6,7,8,9,0)"


The easy way is using regular expressions:

SELECT * FROM yourTable
where yourField REGEXP '^[[:digit:]].*$'

EDIT explain the RegExp

 ^               Start string
 [[:digit:]]     digit one time
 .               everything
  *              zero or more times
 $               End Of String

Read comments to view that

  .*$ 

is not necessary :)


<?php

if ($_GET['search'] == 'nr') {
    $where = "REGEXP '^[[:digit:]]'";
} else {
    $where = "= '" . mysql_real_escape_string($_GET['search']) . "'";
}

$sql = "SELECT .... FROM table WHERE $where";
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜