MySQL:LIKE 和第一个字符


MySQL: LIKE and First character

我有两个MySQL问题。

$query = "  SELECT
                stationname
            FROM
                stations
            WHERE
                stationname >= '". mysql_real_escape_string($_GET['letter']) ."' 
            ORDER BY
                stationname
";

这是第一个查询。URL 中是一个参数集$_GET['letter']包含字母字符。我正在尝试选择stationname$_GET['letter'] 开头的所有行。所以我在另一个 Stackoverflow 主题中找到了这个解决方案,但它似乎不起作用,我得到了我所有的行,而不仅仅是那一行。编辑:似乎它会检查stationname中的所有字符,而不仅仅是开头的字母,我怎么能得到它?

$query = "  SELECT
                stationname
            FROM
                stations
            WHERE
                stationname 
            LIKE
                    '". mysql_real_escape_string($_POST['search']) ."'
";

第二个也是最后一个问题。我想为我的网站制作一个搜索引擎,选择stationname包含$_POST['search']的所有行。但是当我有 2 行时,例如一行称为 cheese,另一行称为 cheese2 ,并且我搜索cheese,只有cheese被选中,当我搜索cheese2时,只有cheese2会被选中。有没有办法同时选择cheesecheese2

LIKE支持通配符。 %表示任意数量的字符(包括零),_表示任何一个字符"

stationname LIKE 'cheese%'

这将匹配cheesecheese2.

您也可以将%用于第一期。

stationname LIKE 'a%'

这将找到所有以 'a' 开头的单词。

我正在尝试选择站名以 $_GET['字母'] 开头的所有行

MySQL有一个LEFT功能,它似乎是你正在寻找的。所以基本上我们提取stationname的第一个字母并将其与您的字母进行比较:

 where left(stationname, 1) = '" . mysql_real_escape_string($_GET['letter']) . "'";

有没有办法同时选择奶酪和奶酪2?

好吧,这里的解决方案有点臭,因为您应该检查cheese是否包含在cheese2中,以及cheese2是否包含在cheese中。试试这个:

where stationname like '%" . mysql_real_escape_string($_POST['search']) .
  "%' OR '" . mysql_real_escape_string($_POST['search']) .
  "' like concat('%', stationname, '%')";

第二名。

 $query = "   SELECT
                        stationname
                    FROM
                        stations
                    WHERE
                        stationname 
                    LIKE
                        '". mysql_real_escape_string($_POST['search']) ."%'
        ";

MySQL 中的文本通配符是 %,因此对于您的第一个查询,您可能需要:

$query = "    SELECT
                    stationname
                FROM
                    stations
                WHERE
                    stationname LIKE '". mysql_real_escape_string($_GET['letter']) ."%' 
                ORDER BY
                    stationname
    ";

对于您的第二个查询:

$query = "   SELECT
                    stationname
                FROM
                    stations
                WHERE
                    stationname 
                LIKE
                    '%". mysql_real_escape_string($_POST['search']) ."%'
    ";

FOR Tel Number

5 发现第一个字符

$Sql="SELECT * FROM customers WHERE TEL REGEXP '^[5]' LIMIT 0,500";