代码点火器总是逃避我的 SELECT ... CASE 查询

Jon*_*han 4 codeigniter

我正在使用 Codeigniter 对我的数据库进行查询。代码如下:

$this->db->select("category.Name,
booking.Comment,
CASE WHEN amount > 0 THEN amount END AS PosAmount,
CASE WHEN amount < 0 THEN amount END AS NegAmount");
Run Code Online (Sandbox Code Playgroud)

但我总是得到一个

You have an error in your SQL syntax ... right syntax to use near
'WHEN amount > 0 THEN amount END AS PosAmount, `CASE` WHEN amount < 0 
THEN amount' at line 1
Run Code Online (Sandbox Code Playgroud)

Codeigniter 正在逃避 CASE,但我不知道如何防止这种情况发生。

有任何想法吗?

Adr*_*nXL 5

文档

$this->db->select()接受可选的第二个参数。如果您将其设置为FALSE,CodeIgniter 将不会尝试保护您的字段或表名。如果您需要一个复合选择语句,其中字段的自动转义可能会破坏它们,这将非常有用。

在你的情况下:

$this->db->select("category.Name,
booking.Comment,
CASE WHEN amount > 0 THEN amount END AS PosAmount,
CASE WHEN amount < 0 THEN amount END AS NegAmount", FALSE);
Run Code Online (Sandbox Code Playgroud)

第二个参数也可用于 where 和 join 子句。