gpt4 book ai didi

sql - Oracle排序数据包含文本&数字

转载 作者:行者123 更新时间:2023-12-02 06:28:29 24 4
gpt4 key购买 nike

我正在使用 Oracle 数据库,现在我想对包含文本和数字的数据进行排序。

以下数据的脚本:

SELECT * FROM WA_GA_TBL_LINES
WHERE LINENAME LIKE 'LEGO%' AND
SECTIONID_FK = 'SC0013' AND
LINENAME != 'LEGO 16'
ORDER BY LPAD(LINENAME,
(SELECT MAX(LENGTH(LINENAME))
FROM WA_GA_TBL_LINES)) ASC

数据

LEGO 1
LEGO 2
LEGO 3
LEGO 4
LEGO 5
LEGO 6
LEGO 7
LEGO 8
LEGO 9
LEGO 10
LEGO 11
LEGO 15
LEGO 12A
LEGO 12B
LEGO 13A
LEGO 13B
LEGO 14A
LEGO 14B

如您所见,LEGO 15 的位置不正确。

我想要的是 LEGO 15 在最后一个位置(因为 15 是最高的数字)

LEGO 1
LEGO 2
LEGO 3
LEGO 4
LEGO 5
LEGO 6
LEGO 7
LEGO 8
LEGO 9
LEGO 10
LEGO 11
LEGO 12A
LEGO 12B
LEGO 13A
LEGO 13B
LEGO 14A
LEGO 14B
LEGO 15

最佳答案

可以使用 REGEXP 实现如下结果 -

SELECT * FROM WA_GA_TBL_LINES 
WHERE LINENAME LIKE 'LEGO%'
AND SECTIONID_FK = 'SC0013'
AND LINENAME != 'LEGO 16'
ORDER BY TO_NUMBER(REGEXP_REPLACE(LINENAME,'[^0-9]',''));

结果:

LEGO 1
LEGO 2
LEGO 3
LEGO 4
LEGO 5
LEGO 6
LEGO 7
LEGO 8
LEGO 9
LEGO 10
LEGO 11
LEGO 12A
LEGO 12B
LEGO 13A
LEGO 13B
LEGO 14A
LEGO 14B
LEGO 15

关于sql - Oracle排序数据包含文本&数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48124070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com