sql - 如何根据特殊字符内的自定义值对数据库结果进行排序?
问题描述
我有一个返回的数据集
1001(10), 1001(09), 1002(08)
。有没有办法可以将此数据集排序为以下顺序,您可以在其中检查括号内的值并对它们进行排序:
1002(08)
1001(09)
1001(10)
我只知道排序是 ORDER BY DESC 和 ASC 的方式,但是,这是一种奇怪的排序方式,这甚至可能吗?
解决方案
如果你真的不想把它分成两个字段,你可以这样做:
SELECT t.*
FROM my_table t
ORDER BY trim(ltrim(t.my_column, '0123456789'), '()')::int
假设您的字符串始终以整数开头,然后在括号中有一个整数。
但是你真的应该考虑改变你的数据模型。
推荐阅读
- emgucv - 如何转换 OpenCV Mat.at
(float,float) 到 EmguCV - tfs - 在新硬件和数据库上将 TFS 2015 迁移到 TFS 2018
- karate - 空手道 api:所需的请求部分“文件”不存在
- jboss - JBoss EAP 已启动并正在运行,但无法通过 Web 浏览器访问
- c# - 从excel文件中读取值,得到不正确的值
- mysql - 订单记录,如果它在另一个表中
- selenium-webdriver - Mac OS X 上的 Java System.getProperty(“user.dir”) 出现异常
- node.js - 错误:找不到模块“二进制扩展”
- sql - 选择基于当前日期的值,该日期距某个日期超过 1、2 和 3 年
- angular6 - 组件未以角度 6 加载