Oracle中对数字加汉字的排序(再完善)详解数据库

问题是随着需求的变化逐步发现并解决的,之前写过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) --数字排序 

在这里插入图片描述

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/database/4114.html

(0)
上一篇 2021年7月16日 18:38
下一篇 2021年7月16日 18:38

相关推荐

发表回复

登录后才能评论