mysql – Doctrine中的简单IF测试语句

Doctrine是否支持IF语句?我收到以下错误:

Expected known function,got 'IF'

使用IF执行此查询时:

$qb->select("c.id,IF(c.type_id LIKE 9,c.name,c.lastname) as name")

它在纯SQL中重写时工作正常.任何解决方法?
最佳答案
是的,如果不支持原则中的陈述,您可以将其转换为大小写

IF(c.type_id LIKE 9,c.lastname) as name

case when c.type_id = 9 then c.name else c.lastname end as name

更新:
从注释中,在case-when中允许使用concat函数

非常允许答案是肯定的.这是一个例子

mysql> select * from timesheets ;
+-----------+-------+----------+
| client_id | hours | category |
+-----------+-------+----------+
|         1 |  1.50 | onsite   |
|         1 |  1.50 | onsite   |
|         1 |  1.00 | remote   |
|         2 |  1.50 | remote   |
+-----------+-------+----------+
4 rows in set (0.00 sec)

mysql> select 
case when category = 'onsite' then concat('ON',' ',hours) else hours
end as dd from timesheets ;
+---------+
| dd      |
+---------+
| ON 1.50 |
| ON 1.50 |
| 1.00    |
| 1.50    |
+---------+
4 rows in set (0.00 sec)

dawei

【声明】:唐山站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。