我想知道如何对递增或递减的varchar值进行排序。
这是我的领域和价值观 Filling_s_no varchar2;
表:
Id Filling_s_no name
1 1.1.1 X
1 1.1.10 X
1 1.1.5 X
1 1.1.2 X
1 1.2.1 X
1 1.2.0 X
现在我想按照这种格式对表格进行排序
Id Filling_s_no name
1 1.1.1 X
1 1.1.2 X
1 1.1.5 X
1 1.1.10 X
1 1.2.0 X
1 1.2.1 X
我尝试使用此查询但无法获得解决方案。
select *
from TCD_EX_Tab
where id=1
order by Filling_s_no ASC;
答案 0 :(得分:1)
以下查询将满足您的需求:
SELECT ID, FILLING_S_NO, NAME
FROM TCD_EX_TAB
where id=1
order BY TO_NUMBER(REGEXP_SUBSTR(filling_s_no, '[0-9]+', 1, 1)),
TO_NUMBER(REGEXP_SUBSTR(filling_s_no, '[0-9]+', 1, 2)),
TO_NUMBER(REGEXP_SUBSTR(filling_s_no, '[0-9]+', 1, 3));
要解决的问题是需要将文本字符串的组件转换为数字,以便按照您的需要进行排序。我们使用正则表达式来挑选字符串的每个子元素,然后将这些子元素转换为NUMBER类型以进行排序。
祝你好运。