【发布时间】:2019-03-04 15:12:57
【问题描述】:
如何按字母顺序排列并获得结果在第一位?
查询:
SQL SELECT name FROM article ORDER BY name;
**and the result is:**
GitFlow GithubFlow .gitignore 交出 增量迁移
...but I want to have `.gitignore` first.
**Expected result:**
.gitignore GitFlow GithubFlow 交出 增量迁移
**//update:**
**Correct query is:**
SQL
SELECT name FROM articles ORDER BY name::bytea;
来源:Incorrect sort/collation/order with spaces in Postgresql 9.4
...但我不知道为什么,你能解释一下吗?
//edit1:
我也需要先对其他非字母字符进行排序。 (例如 $-_# ...)
【问题讨论】:
-
可能是排序规则问题,出于兴趣,您为什么要将列转换为 bytea 数据类型?
-
@Lucas 我发现了这个问题:stackoverflow.com/questions/34537982/… 所以试试看。
-
您是否尝试过查询而不将其转换为 bytea?
-
@Lucas 我当然试过了......正如你所看到的带有“查询”和“结果是”的段落......这是 PostgreSQL 在 Heroku 上的默认行为,我没有知道为什么。 :)
-
我问的是 Bytea,因为没有排序规则(排序规则),它是按字节值排序的,而“字符串”(我只能假设这是您要转换的列类型,排除枚举, json etc...) 将有一个排序规则,因此会出现奇怪的排序。解决问题需要理解它。
标签: sql postgresql heroku sql-order-by