我需要使用 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/