2014-02-16 56 views
2

這就是我迄今爲止所做的。按第一個字符過濾列值?

$filtered_results = array(); 

$result = $this->db 
       ->select('name') 
       ->from('user') 
       ->get() 
       ->result_array();  

foreach($result as $name) 
{ 
    if($name[0]=='a') 
    { 
     filtered_results[] = $name; 
    } 
} 

上述代碼邏輯上浪費了太多的時間來處理所有結果,如果我的表包含大量的行。所以,另一種方法是直接檢索'a'作爲$name[0];的結果。這可能嗎?

->where('name'.[0],'a') 
+3

'... WHERE LEFT(姓名,1)= 「a''? –

+0

請修復這個問題。這不是列名,但列值 – Leo

+0

我在我的表中有一個列名,我得到了結果。 $名稱來自foreach,顯示檢索結果爲$ name。 – user3205047

回答

4

這將是一個開始:

例1:

SELECT `name` FROM `user` where `name` like 'a%' 

例2:(馬克B)

SELECT `name` FROM `user` WHERE LEFT(`name`, 1) = 'a' 
+0

'a%'表示第一個字符是a,%是字符串的其餘字符。 – user3205047

+0

@ user3205047,是的,但是我會建議你Marc B寫的,我會加上它。 –

+1

是的。 '%'是通配符。 a%表示「開頭爲」或「%a」表示結束。而'%a%'的意思是包含... –