我正在使用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 '%'
我没有在上面留下错误编号,就是它出现的方式。
答案 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 . '%'));