一尘不染

教义2查询生成器abs函数

mysql

这项工作:

    $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(有时是数字,有时是字符串),我需要在数字情况下订购数字。

有帮助吗?


阅读 303

收藏
2020-05-17

共1个答案

一尘不染

解决了atma abs()Thank的问题,它不能直接在orderBy中工作,而只能作为别名。

溶解度

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

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

2020-05-17