这项工作:
$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(有时是数字,有时是字符串),我需要在数字情况下像数字一样排序。
1-)我避免使用NativeQuery。
2-)u.code是mysql上的varchar fild,需要是varchar(有时是数字,有时是字符串),我需要在数字情况下像数字一样排序。
有帮助吗?
解决的atma Thank’s abs()realy不能直接在orderBy中使用,而只能作为别名使用。
abs()
溶解度
SELECT field1,field2,abs(field3) AS abs_field3 FROM table ORDER BY abs_field3 ASC
Obs:这是一个理论上的限制,而不是mysql的限制,mysql会部分按顺序直接支持abs。