簡體   English   中英

mySQL如何限制查詢返回包含子字符串的所有結果

[英]mySQL how to limit query returning all results containing a substring

讓我們考慮一個例子。 我想搜索汽車,我得到了所有的結果。

但問題是我也得到了所有包含 car 作為子字符串的結果,例如我的結果還返回卡通、care 和每個包含 car 作為子字符串的單詞在我的數據庫中。

我想要的是應用一個過濾器/條件,這樣它就不會返回卡通和關懷之類的詞,而應該只返回汽車和汽車之類的詞。

我怎樣才能做到這一點? 我嘗試了以下解決方案,我知道問題是什么,但我不明白如何解決它

$string.='(
            tbl_data.ad_title like "%'.$_REQUEST['searchtt'].'%"  
             or tbl_categories.cat_title like "%'.$_REQUEST['searchtt'].'%"           
          ) and ';

$gtdata = mysql_query(

"SELECT tbl_data.id, tbl_data.main_cat, tbl_data.sub_cat, 
        tbl_data.makevalue, tbl_data.ad_title, tbl_data.additional,
        tbl_data.city_name, tbl_data.city_area, 
        tbl_data.date1,tbl_data.date2,tbl_data.make_featured_active, 
        tbl_data.make_stoplight_active, tbl_data.make_urgent_active 
        FROM tbl_data 
        LEFT JOIN tbl_categories
        ON tbl_data.main_cat=tbl_categories.id 
        WHERE ".$string." tbl_data.status='1' and tbl_data.del=0
        and tbl_data.exp=0 and tbl_data.sold=0 and tbl_data.userblock='0'
       ".$orderby." 
       limit ".$limit_start.",".$limit_end."");
while($res_gtdata=mysql_fetch_array($gtdata))
{
//all results are stored in this variable
//$res
}

聽起來您想以單數和復數形式搜索名詞,例如“car”和“cars”、“apple”和“apples”。 那是對的嗎?

如果是這樣,使用更具體的where條款,而不是like這只是看起來為單數和復數形式:

$singular = $_REQUEST['searchtt'];
$plural   = $singular.'s';

$gtdata = mysql_query(
"SELECT ...
FROM...
WHERE tbl_data.ad_title IN ('".$singular."', '".$plural."')
OR tbl_categories.cat_title IN ('".$singular."', '".$plural."')
...

這是一個可能對您有用的幼稚實現。 大多數復數很簡單 - 只需添加一個 's' - 但以元音結尾的名詞需要 'es' ,例如土豆/土豆,還有很多不規則形式,例如腳/腳和孩子/兒童。 有關詳細信息,請參閱如何在 php mysql 中搜索單數/復數

您需要知道的另一件事是查詢 ( searchtt ) 是否總是單數。 例如,人們是否總是搜索“汽車”而不是“汽車”?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM