在CodeIgniter中为PostgreSQL查询强制转换列

在CodeIgniter中为PostgreSQL查询强制转换列,sql,codeigniter,postgresql,Sql,Codeigniter,Postgresql,我正在使用CodeIgniter构建一个以PostgreSQL作为数据库层的应用程序 我在应用程序中有一个基于AJAX的搜索功能,它可以查询数据库中的多个列以查找潜在的匹配项。一个特定列的类型为BIGINT。为了对该列执行类似的查询,我首先需要将其转换为文本。为此编写SQL非常简单: SELECT * FROM tablename WHERE columnname::text LIKE '1011%'; 目前,我看不到使用CodeIgniter的活动记录复制此内容的方法,因为以下情况会产生错

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

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

 SELECT * FROM tablename WHERE columnname::text LIKE '1011%';
目前,我看不到使用CodeIgniter的活动记录复制此内容的方法,因为以下情况会产生错误:

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

我没有遗漏上面的错误号,这就是它的显示方式。

您是否尝试过不使用::text这样:

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

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

我只是想确认确实需要使用
查询
方法

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

你的错误是什么?我已经在问题@Nil'zYes中添加了错误信息。很抱歉,我应该指定我通过执行那行代码发现了我需要强制转换的事实。它产生另一个错误,抱怨试图在BIGINT字段类型上使用LIKE。