在CodeIgniter中为PostgreSQL查询投射一列

时间:2014-05-14 14:48:09

标签: sql codeigniter postgresql

我正在使用CodeIgniter构建一个使用PostgreSQL作为数据库层的应用程序。

我在应用程序中有一个基于AJAX的搜索功能,可以查询数据库中的多个列以查找可能的匹配项。一个特定列具有BIGINT类型。为了对此列执行LIKE查询,我首先需要将其强制转换为文本。为此编写SQL非常简单:

 SELECT * FROM tablename WHERE columnname::text LIKE '1011%';

目前我无法使用CodeIgniter的Active Record查看复制方法,因为以下内容会产生错误:

$this->db->like('columnname::text', '1011%');

是否可以安全地假设在CI中无法执行此类查询并且应该还原为$this->db->query();

我从CI收到的错误是:

A Database Error Occurred
Error Number:
ERROR: column "columnname::text" does not exist LINE 3: WHERE "columnname::text" LIKE '%'

我没有在上面留下错误编号,就是它出现的方式。

2 个答案:

答案 0 :(得分:0)

你是否尝试过没有 :: text 的那样:

$this->db->like('columnname', '1011%');

通常您不需要指定数据类型,除非在特定功能或特定情况下

答案 1 :(得分:0)

我只想确认确实需要使用query方法。

$sql = ('SELECT * FROM tablename WHERE columname::text LIKE ?');
$query = $this->db->query($sql, array($str . '%'));