原创

Oracle中对数字加汉字的排序(再完善)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://itmyhome.blog.csdn.net/article/details/86216050

问题是随着需求的变化逐步发现并解决的,之前写过oracle中对数字加汉字的排序以及REGEXP_SUBSTR介绍Oracle中对数字加汉字的排序(完善), 这次数据又不一样了
第一次是数字在前汉字在后且数字没有重复,如下
在这里插入图片描述

第二次是数字有重复,且数字前后内容相同,如下
在这里插入图片描述

这次和第二次唯一不同的是数字后面内容是不同的,如下:
在这里插入图片描述

第一种排序:

SELECT * FROM test2 order by name;

在这里插入图片描述

第二种排序:

SELECT * FROM test2 order by cast(REGEXP_SUBSTR(name, '[0-9]+') as int);

在这里插入图片描述
仅对数字进行排序,不符合需求


第三种排序:

SELECT * FROM test2 
order by REGEXP_SUBSTR(name, '[[:alpha:]]+'), --汉字排序(只对数字的前半部分)
cast(REGEXP_SUBSTR(name, '[0-9]+') as int) --数字排序

在这里插入图片描述

继续优化:

SELECT * FROM test2 order by REGEXP_REPLACE(name,'[0-9]+',''), --汉字排序(替换数字,留下全部汉字)
cast(REGEXP_SUBSTR(name, '+[0-9]+') as int) --数字排序

在这里插入图片描述

作者:itmyhome

展开阅读全文

没有更多推荐了,返回首页