【发布时间】:2020-02-21 20:05:18
【问题描述】:
我有一个表,其中有一列包含名称 (varchar),但有些名称里面有数字,并且顺序不是预期的。
我有类似的东西:
Courlis
D11 Espadon
D13 Balbuzard
D1 empacher
D2
但我希望:
Courlis
D1 empacher
D2
D11 Espadon
D13 Balbuzard
我发现了很多关于它的提示,但它总是关于仅存储为字符串的数字排序:添加一个 0 以将其转换为数字,检查字符串的长度以将 1 放在 10 之前,等等......但是在我的情况下它不能工作。
我不能使用 SQL 查询,因为我以需要 QueryBuilder 的 Symfony 应用程序的形式使用它。
【问题讨论】:
-
这个订单有什么“疯狂”的地方?
-
这只是一种说话方式,只是它不是我们在订购商品时所期望的。我们期望顺序字母,然后是数字,顺序如下:1、2、3、4、5、6、7、8、9、10、11、12。不是:1、10、11、12、2 , 3, 4, 5, 6, 7, 8, 9
-
这个问题的边界重复。 stackoverflow.com/questions/5967500/…
-
嗯,我不太明白python问题的答案。它与 Doctrine Query Builder 并没有真正的关系。目前,我发现的唯一工作是使用
ORDER BY name::bytea ASC;的纯 SQL 请求,但它在 Doctrine 中不起作用。 -
你可以在 PostgreSQL 从 v10 开始使用 ICU 排序规则。
标签: postgresql symfony doctrine doctrine-query natural-sort