我正在使用PostgreSQL
数据库。使用codeigniter之类的函数创建搜索查询。
$ this-> db->($ colName。" :: text",$ value) - > get(" datatables_demo");
SELECT * FROM "datatables_demo" WHERE "first_name::text" like '%co%'
但是在PostgreSQL
中显示错误,我想要输出
SELECT * FROM "datatables_demo" WHERE first_name::text like '%co%'
codeigniter中是否有任何选项可以从like函数中删除反转的逗号 我试图在3 rd 参数false
中发送false$this->db->($colName."::text", $value, false)
使用类似功能
提供解决此问题的任何选项查询:SELECT * FROM" datatables_demo" WHERE" salary :: text"喜欢 '%320%' ESCAPE'!'
When i run this query in postgresql
ERROR: column "salary::text" does not exist
LINE 1: SELECT * FROM "datatables_demo" WHERE "salary::text" LIKE ...
^
********** Error **********
ERROR: column "salary::text" does not exist
SQL state: 42703
Character: 40
但是当我从列中删除倒置的逗号时,它会返回结果succuessfully
SELECT * FROM" datatables_demo"在哪里薪水::文字喜欢'%320%' ESCAPE'!'
答案 0 :(得分:3)
如果你认为sql喜欢函数 试试这个。
$sql = ('SELECT * FROM datatables_demo WHERE salary::text LIKE ?');
$query = $this->db->query($sql, array($value . '%'));
答案 1 :(得分:0)
我认为在codeigniter2中,PostgreSql驱动程序具有类似运算符的先前版本代码。 如果你想使用codeigniter之类的函数构建查询,你必须在codeigniter系统数据库库中进行一些更改 我在这条路上给你改变
系统\数据库\驱动\ postgre \ postgre_driver.php
第36行
func sha256(data:String) -> String {
let data = self.dataUsingEncoding(NSUTF8StringEncoding)!
var digest = [UInt8](count:Int(CC_SHA256_DIGEST_LENGTH), repeatedValue: 0)
CC_SHA256(data.bytes, CC_LONG(data.length), &digest)
let hexBytes = digest.map { String(format: "%02hhx", $0) }
return hexBytes.joinWithSeparator("")
}
替换为
var $_escape_char = '"';
您的查询输出与您预期的相同o / p 最好的运气