如何将RIGHT LEFT函数转换为codeigniter活动记录

时间:2015-06-22 06:16:06

标签: mysql sql codeigniter activerecord

我有这样的查询:

SELECT RIGHT(id, 1) id_root
FROM  user 
WHERE LENGTH(id) = 3
and LEFT(id, 1) = '0'

以及如何将该查询转换为codeigniter中的有效记录。

我的问题是语法RIGHT( id, 1 )以及LEFT(id,1)='0'

3 个答案:

答案 0 :(得分:3)

    $result_arr = $this->db
        ->select("RIGHT(id, 1) id_root", FALSE)
        ->from("user")
        ->where(
                array("LENGTH(id)"=> 3, "LEFT(id, 1) =" => 0)
        )->get()
        ->result_array();

或者您只需使用$this->db->query("You SQL");

即可
$query = "SELECT RIGHT(id, 1) id_root
          FROM  user 
          WHERE LENGTH(id) = ?
          and LEFT(id, 1) = ? ";
$result_arr = $this->db->query($query, array(3, 0))->result_array();

答案 1 :(得分:1)

saredpreference

答案 2 :(得分:1)

您可以像这样生成您的查询

$this->db->from('user');
$this->db->select('RIGHT(id, 1) id_root',false);
$this->db->where('LENGTH(id)',3,true);
$this->db->where('LEFT(id, 1) =','0',true);
$results=$this->db->get()->result();

请记住,如果你想在你的select查询中使用mysql函数,这可能会通过codeigniter破坏mysql语法,使用false作为第二个参数,这样codeigniter就不会保护/隐藏你的字段。

相同的地方,如果你想使用mysql函数或其他可能会破坏mysql语法的函数,使用第三个参数为true,这样codeigniter就不会转换你的字段。

详情请见documentation

使用$this->db->query('YOUR_QUERY')获取任何查询结果的最简单方法但我更喜欢使用CI Active记录的函数。