【发布时间】:2016-01-20 08:47:29
【问题描述】:
我正在尝试按以下顺序对记录进行排序
1) 特殊字符
2) 只有数字
3) 字母/字母数字
记录
G1
G10
G19
123
87
!@#$
G5
G25
G9
预期输出:
!@#$
87
123
G1
G5
G9
G10
G19
G25
谁能帮忙解决这个问题。
我试过SUBSTRING(name FROM '^(.*?)( \\d+)?$')
【问题讨论】:
-
Postgresql 支持数字排序的排序规则吗?
-
是的,我猜它支持
-
如果是这样,请执行
ORDER BY Records COLLATE numericcollation之类的操作。 (您可能需要单独处理特殊字符...) -
你是如何定义特殊字符的顺序的? !@#$ 会在 @#!$ 之前出现吗?什么是逻辑。还有数字呢?第一位数字?从最小到最大?字母是 G1、G2、G3 等还是 G1、G12、G23、G3、G45
-
就此而言,我没有考虑特殊字符的顺序,但如果我们将其与字母/数字/字母数字进行比较,那么特殊字符应该放在首位
标签: sql regex postgresql sql-order-by