sql - Heroku PostgreSQL 按字母顺序按点在前
问题描述
如何按字母顺序排列并在第一位得到一个点的结果?
询问:
SQL SELECT name FROM article ORDER BY name;
**and the result is:**
GitFlow GithubFlow .gitignore Handover 增量迁移
...but I want to have `.gitignore` first.
**Expected result:**
.gitignore GitFlow GithubFlow Handover 增量迁移
**//update:**
**Correct query is:**
SQL
SELECT name FROM articles ORDER BY name::bytea;
来源:Postgresql 9.4 中带有空格的排序/整理/顺序不正确
...但我不知道为什么,你能解释一下吗?
//编辑1:
我也需要先对其他非字母字符进行排序。(例如 $-_# ...)
解决方案
我希望以下内容能最好地满足您的需求:
ORDER BY
NOT starts_with(name, '.'),
name COLLATE "C"
这将首先对“点文件”进行排序,因为FALSE < TRUE
在这些组中,名称按二进制顺序排序(例如,大写字母在小写字母之前)。
我COLLATE "C"
的效果和你的演员一样,只是更便宜。
您的查询(在某种程度上)实现了您想要的,因为 ASCII 值.
小于所有字母的 ASCII 值。
如果您希望将名称按自然语言顺序排序(例如albe < Simek
),请删除COLLATE
我的答案中的子句。
推荐阅读
- python - 您输入的数据用完了;中断训练。确保您的数据集或生成器至少可以生成 `steps_per_epoch
- db2 - IBM Db2 on Cloud 脚本在错误的模式中创建表
- r - 多个滑块的闪亮名称
- python - 为什么在尝试使用 Django 注册用户时无法访问我的模板视图?
- kubernetes - 使用`status.hostIP`作为kubernetes中我的env变量的参考字段时的空变量
- multithreading - 在独立应用程序中成功完成进程后如何杀死 Apache Camel 父线程?
- android - 运行“splash”时出错:必须导出活动或包含意图过滤器
- node.js - node.js fs Readstream 事件处理程序从未在 Node 12.3.1 中调用
- python - 根据 Python 中的字典值分离输入数据
- excel - AdvancedFilter 创建一个命名范围