小编典典

Doctrine 2查询生成器ABS函数

sql

这项工作:

    $qb = $this->em->createQueryBuilder();

    $qb->select("abs(u.code) as code")
       ->from("User", "u")
       ->orderBy("code","ASC")
       ->getQuery()
       ->getArrayResult();

这不起作用:

    $qb = $this->em->createQueryBuilder();

    $qb->select("u.code")
       ->from("User", "u")
       ->orderBy("abs(u.code)","ASC")
       ->getQuery()
       ->getArrayResult();

错误:

语法错误]行0,列118:错误:预期的字符串结尾,得到了’(’

本地学说功能abs仅对语句的选定部分起作用,而对部分命令不起作用。

Obs:

1-)我避免使用NativeQuery。

2-)u.code是mysql上的varchar fild,需要是varchar(有时是数字,有时是字符串),我需要在数字情况下像数字一样排序。

有帮助吗?


阅读 249

收藏
2021-05-05

共1个答案

小编典典

解决的atma Thank’s abs()realy不能直接在orderBy中使用,而只能作为别名使用。

溶解度

SELECT field1,field2,abs(field3) AS abs_field3 
FROM table 
ORDER BY abs_field3 ASC

Obs:这是一个理论上的限制,而不是mysql的限制,mysql会部分按顺序直接支持abs。

2021-05-05