You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中如何按字符串后缀排序(R优先于S)

PostgreSQL按ref_num最后一个字符排序(R在前,S在后)

这里提供几种可行的实现方式:

方法1:使用RIGHT函数(最简洁)

直接截取字段的最后1个字符,以此作为排序依据。由于'R'的ASCII码小于'S',默认升序排序就能满足R在前、S在后的需求:

SELECT ref_num
FROM your_table_name
ORDER BY RIGHT(ref_num, 1);

注:ASC是默认排序规则,可省略不写。

方法2:修正SUBSTRING的用法

如果之前用substring未成功,可能是语法问题。PostgreSQL中可以通过以下两种方式用substring截取最后一个字符:

方式A:基于字符串长度

SELECT ref_num
FROM your_table_name
ORDER BY substring(ref_num, length(ref_num));

方式B:正则匹配

SELECT ref_num
FROM your_table_name
ORDER BY substring(ref_num from '.$');

方法3:用CASE语句明确排序优先级(更稳妥)

如果后续可能出现其他后缀字符,或者不想依赖ASCII码顺序,可以用CASE强制指定排序优先级:

SELECT ref_num
FROM your_table_name
ORDER BY CASE RIGHT(ref_num, 1)
           WHEN 'R' THEN 1
           WHEN 'S' THEN 2
           ELSE 3 -- 其他后缀排在最后
         END;

内容的提问来源于stack exchange,提问作者Syntesa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 09:12:37