MySQL:LIKE和第一个字符
你好,那里再次Stackoverflow! 2个MySQL问题。MySQL:LIKE和第一个字符
$query = " SELECT
stationname
FROM
stations
WHERE
stationname >= '". mysql_real_escape_string($_GET['letter']) ."'
ORDER BY
stationname
";
Firstoff,这里是第一个查询。在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
将被选中。有什么办法可以同时选择cheese
和cheese2
?
LIKE
支持通配符。 %
指任何数目的字符(包括零),并且_
指任何一个character`
stationname LIKE 'cheese%'
这将匹配cheese
和cheese2
。
您也可以在第一期中使用%
。
stationname LIKE 'a%'
这会找到所有以'a'
开头的单词。
在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']) ."%'
";
我试图选择所有行的名字以$ _GET ['letter'开始]
MySQL有一个LEFT
功能似乎是你在找什么。所以基本上,我们提取stationname
的第一个字母,并比较其agains你的信:
where left(stationname, 1) = '" . mysql_real_escape_string($_GET['letter']) . "'";
有什么办法来选择两种奶酪和cheese2?
那么这里的解决方案是一个有点臭,你应该检查cheese
是否包含在cheese2
以及是否cheese2
包含在cheese
。试试这个:
where stationname like '%" . mysql_real_escape_string($_POST['search']) .
"%' OR '" . mysql_real_escape_string($_POST['search']) .
"' like concat('%', stationname, '%')";
FOR电话号码
5认定的第一个字符
$Sql="SELECT * FROM customers WHERE TEL REGEXP '^[5]' LIMIT 0,500";
'LIKE '% “mysql_real_escape_string($ _ POST。 '%'[' 搜索])”'首先也可以使用 – hjpotter92 2012-04-10 16:37:52