2014年8月27日 星期三

【MySQL】LIKE 搜尋


一、一般
1.name LIKE '豬%' -> 找豬開頭的文字後面不論字數,例如:豬八戒、豬頭
2.name LIKE '%豬%' -> 只有出現豬就算找到,如豬、神豬、豬頭
3.name LIKE '豬_' -> 限定字數只找豬開頭兩個字,底線在那邊就一定要有字
4.name LIKE '%豬%戒%' -> 只要字串包含順序有豬跟界就符合
二、應用搜尋

// 將字切開並加上%
$arr = $this->utf8_str_split($keywords);
$keywordSplit = implode('%',$arr);

// 這樣比 '%$keywords%' 搜尋到更多結果
$sql = "SELECT * FROM user WHERE name LIKE '%$keywordSplit%'";  
$rs = $pdo->query($sql);

// 用UTF8切文字  
function utf8_str_split($str, $split_len = 1){
 if (!preg_match('/^[0-9]+$/', $split_len) || $split_len < 1)
   return FALSE;

 $len = mb_strlen($str, 'UTF-8');
 if ($len <= $split_len)
   return array($str);

 preg_match_all('/.{'.$split_len.'}|[^\x00]{1,'.$split_len.'}$/us', $str, $ar);

 return $ar[0];
}  
  

沒有留言:

張貼留言