【问题标题】:Filter column value by the first character?按第一个字符过滤列值?
【发布时间】:2014-02-16 23:48:11
【问题描述】:

这是我到目前为止所做的。

$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')

【问题讨论】:

  • ... WHERE LEFT(name, 1) = 'a'?
  • 请修正问题。不是列名,而是列值
  • 我的表中有一个列名,我从中得到了结果。 $name 来自 foreach,将检索到的结果显示为 $name。

标签: php mysql sql database


【解决方案1】:

这将是一个开始:

示例 1:

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

示例 2:(马克 B)

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

【讨论】:

  • 'a%' 是否意味着第一个字符是 a 而 % 是字符串的其余字符。
  • @user3205047,是的,但我会建议你 Marc B 写的内容,我会添加它。
  • 是的。 %是一个通配符。 a% 表示“以 a 开头”或“%a”表示以结尾。而 '%a%' 表示包含...
  • 两者都是我正在寻找的东西,尽管我可能会问,哪个更好。或者如果在查询方面哪个更快。我需要尽可能减少加载时间
  • 感谢您的回答...对于使用 WebSQL 数据库的应用程序,我需要按首字母过滤...“a%”选项效果很好,但 Marc B 抛出错误...所以万一有人会使用 WebSQL,第一个选项就是选择...
猜你喜欢
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 2012-11-24
  • 1970-01-01
  • 2020-08-28
  • 2013-09-13
相关资源
最近更新 更多