首页 > 解决方案 > 如何在字符变化列上对spring数据jpa存储库进行排序

问题描述

嗨,我们在 java 中使用 postgress 数据库和 spring data jpa 存储库来使用数据。现在我们有一列(版本)类型为“字符变化(255)”,列的数据val1 = 11.0.2000.78val2 = 11.0.2000.301

当我们使用 spring data jpa 存储库触发降序排序查询时,它会val1val2. 实际上它应该val2val1.

我们知道,由于列是字符类型,因此它正在考虑 7 大于 3,所以问题就在于此。有什么解决方案吗?

我们希望对此类值的字符类型列进行数字排序。有什么方法可以在 spring data jpa repository 中处理?

标签: springjpaspring-data-jpaspring-repositories

解决方案


CREATE TABLE tableone
(
    test text
) ;


INSERT INTO tableone(test) VALUES('11.0.2000.78');
INSERT INTO tableone(test) VALUES('11.0.2000.301');


select * from tableone order by test desc;

SELECT
   test
FROM
    tableone order by 
    ( CAST(
        COALESCE(
            NULLIF(
                replace(test, '.', ''), 
                ''),
            '0') 
       AS numeric) ) desc;

推荐阅读