【问题标题】:Incorrect ORDER BY PostgreSQLPostgreSQL 的错误顺序
【发布时间】:2021-04-15 12:21:41
【问题描述】:

我在尝试订购我的专栏时遇到了一个奇怪的问题。该列与我正在使用的通常表格不同,其中 the43 通常是数字中的逗号。这里的数字没有逗号,当我订购该列时,我会得到类似

company_id
10097
1024
10304
151

有什么帮助吗?理想情况下,我想将这些数字转换为带逗号的数字,以便以后加入时与其他表保持一致

【问题讨论】:

  • 列数据类型?整数会有所帮助,但我猜这里是 varchar...
  • 永远不要在 text 列中存储数字 - 您刚刚发现这是一个坏主意的一个原因。
  • 单个字段中的数字和逗号,以文本形式存储。听起来像是一个大问题,而订购只是其中之一。请尽快修复您的数据模型,这将为您节省大量时间和挫败感。

标签: sql postgresql sql-order-by


【解决方案1】:

大概,这些值是字符串。您可以通过以下两种方式之一对它们进行排序。第一种是“字符串”方式:

 order by length(company_id), company_id

第二种是转成数字:

order by company_id::numeric

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 2014-01-10
    • 2015-05-31
    • 1970-01-01
    相关资源
    最近更新 更多