sql - 如何在 PostgreSQL 中对包含单词和数字的 VARCHAR 列进行排序?

标签 sql postgresql jdbc natural-sort

我需要使用 varchar 列,使用数字和文本顺序对选择查询进行排序。查询将在 java 程序中完成,使用 jdbc 而不是 postgresql。

如果我在我获得的 select 子句中使用 ORDER BY:

1
11
2
abc

但是,我需要获得:

1
2
11
abc

问题是列也可以包含文本。

这个问题类似(但针对 SQL Server):

How do I sort a VARCHAR column in SQL server that contains words and numbers?

但是,所提出的解决方案不适用于 PostgreSQL。

提前致谢,问候,

最佳答案

我遇到了同样的问题,下面的代码解决了这个问题:

SELECT ...
  FROM table
  order by  
    CASE WHEN column < 'A' 
        THEN lpad(column, size, '0')
    ELSE column 
        END;

大小 var 是 varchar 列的长度,例如 255 表示 varying(255)。

关于sql - 如何在 PostgreSQL 中对包含单词和数字的 VARCHAR 列进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4080787/

相关文章:

sql - 在 sql-server 中连接 3 个表

postgresql - Rubymine PostgreSQL 数据库

oracle - 如何使用 ora2pg 迁移导出特定的表架构和数据?

postgresql - Spring Boot 2.1.4 + JDBI + HikariCP + PostgreSQL 发生错误后连接未释放到池

java - jconn2 和 jconn3 的性能差异

java - Tomcat JDBC 池中没有足够的空闲连接

mysql - 如何选择和检查单个行的值并向其中添加文本数据 SQL

SQL while 循环与临时表

sql - 此查询如何获取当月的第一天?

node.js - Docker-compose up 以代码 1 退出,但 docker-compose build 成功