2014-02-16 57 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%'的意思是包含... –