问题描述:

某小区,需要按照小区、楼栋、单元号、房间号进行排序,但是按照地址描述排序时,因为字符串中包含数字,所以造成了如下的结果,

1号楼之后应该是2号楼,但是查询结果却是10号楼 。

尝试解决

使用正则表达式替换

结果:

虽然楼栋号排序正常了,但是会发现房间号排序出现了混乱。  继续想办法

终极办法:

使用translate函数

可以发现,结果正常显示 。

以下附上translate使用方法

一、语法:

TRANSLATE(string,from_str,to_str)

二、目的

返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string。TRANSLATE 是 REPLACE 所提供的功能的一个超集。如果 from_str 比 to_str 长,那么在 from_str 中而不在 to_str 中的额外字符将从 string 中被删除,因为它们没有相应的替换字符。to_str 不能为空。Oracle 将空字符串解释为 NULL,并且如果TRANSLATE 中的任何参数为NULL,那么结果也是 NULL。

三、允许使用的位置

过程性语句和SQL语句。

四、示例

Sql代码

SELECT TRANSLATE('abcdefghij','abcdef','123456') FROM dual;

TRANSLATE (

--------------

123456ghij

SELECT TRANSLATE('abcdefghij','abcdefghij','123456') FROM dual;

TRANSL

----------

123456

语法:TRANSLATE(expr,from,to)

expr: 代表一串字符,from 与 to 是从左到右一一对应的关系,如果不能对应,则视为空值。

举例:

select translate('abcbbaadef','ba','#@') from dual (b将被#替代,a将被@替代)

select translate('abcbbaadef','bad','#@') from dual (b将被#替代,a将被@替代,d对应的值是空值,将被移走)

因此:结果依次为:@#c##@@def 和@#c##@@ef

语法:TRANSLATE(expr,from,to)

expr: 代表一串字符,from 与 to 是从左到右一一对应的关系,如果不能对应,则视为空值。

举例:

select translate('abcbbaadef','ba','#@') from dual (b将被#替代,a将被@替代)

select translate('abcbbaadef','bad','#@') from dual (b将被#替代,a将被@替代,d对应的值是空值,将被移走)

因此:结果依次为:@#c##@@def 和@#c##@@ef

示例如下:

示例一:将数字转换为9,其他的大写字母转换为X,然后返回。

SELECT TRANSLATE('2KRW229','0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ','9999999999XXXXXXXXXXXXXXXXXXXXXXXXXX') "License"FROM DUAL

示例二:将数字保留,将其他的大写字母移除。

SELECT TRANSLATE('2KRW229','0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ','0123456789') "Translate example"FROM DUAL

罗勇补充示例如下:

示例三:示例证明是按照字符来处理,不是按照字节来处理,如果to_string的字符数比from_string多的话,多出的字符数似乎没有什么用处,也不会引发异常。

SELECT TRANSLATE('我是中国人,我爱中国', '中国', 'China') "Translate example"

FROM DUAL

示例四:下面的示例证明,如果from_string的字符数大于to_string,那么多出的字符会被移除,也就是ina三个字符会从char参数中移除,当然区分大小写啦。

SELECT TRANSLATE('I am Chinese, I love China', 'China', '中国') "Translate example"

FROM DUAL

示例五:以下示例证明,如果第二个参数为空字符串,整个返回null。

SELECT TRANSLATE('2KRW229',

'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',

'') "License"

FROM DUAL

示例六:在银行转帐时经常看见账户人只显示姓名的最后一个字,其余的用星号代替,我就用translate来做个类似的东西吧。

SELECT TRANSLATE('中国人',

substr('中国人',1,length('中国人') - 1),

rpad('*',length('中国人'),'*')) "License"

FROM DUAL

总结

以上所述是小编给大家介绍的解决Oracle字符串中包含数字、特殊符号的排序问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

oracle 字段带数字,解决Oracle字符串中包含数字、特殊符号的排序问题相关推荐

  1. 【SQL开发实战技巧】系列(十二):三问(如何对字符串字母去重后按字母顺序排列字符串?如何识别哪些字符串中包含数字?如何将分隔数据转换为多值IN列表?)

    系列文章目录 [SQL开发实战技巧]系列(一):关于SQL不得不说的那些事 [SQL开发实战技巧]系列(二):简单单表查询 [SQL开发实战技巧]系列(三):SQL排序的那些事 [SQL开发实战技巧] ...

  2. java 提取字符串中前面的数字_Java提取字符串中的数字

    在Java中,如果输入一串由其他非数字字符隔开的数字,但却想要将其中的数字提取出来,网上已经给出多种解决方案,以下对这些方法及其对应的情况进行简单的总结,并提出自己的解决方案: 1.多个由不确定字符隔 ...

  3. php 取字符串的数字,php提取字符串中的数字

    近日工作中需要在一串字符串中将所有的数字提取出来这么一个小功能,研究了一下发现方法还挺多,值得记录一下,于是对如何使用PHP将字符串中的数字提取出来的功能做了一个小总结,总结三种方法如下: 第一种方法 ...

  4. php提取字符串中数字,php提取字符串中的数字教程

    字符串是我们程序员必定接触法人,有时候工作中需要在一串字符串中将所有的数字提取出来,其实研究一下这种方法还挺多,对如何使用PHP将字符串中的数字提取出来的功能我们做了一个小总结,和大家一起分享一下,总 ...

  5. java string 字符个数字_java从字符串中提取数字

    string类函数的补充说明: trim()方法返回调用字符串对象的一个副本,但是所有起始和结尾的空格都被删除了,例子如下:String s=" Hello World ".tri ...

  6. java 保留字符串中的数字_java从字符串中提取数字

    随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取出来呢?大致有以下几种方法, ...

  7. java 取字符串中的数字_java截取字符串中的数字

    随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取出来呢?大致有以下几种方法, ...

  8. php 在字符串中 找数字,php提取字符串中的数字

    第一种方法: function findNum($str=''){ $str=trim($str); if(empty($str)){return '';} $reg='/(\d{3}(\.\d+)? ...

  9. mysql截取数字_mysql 截取字符串中的数字

    展开全部 select  REVERSE(right(REVERSE(filename),length(filename)-LEAST( if(Locate('0',REVERSE(filename) ...

  10. C# 使用正则表达式去掉字符串中的数字

    C# 使用正则表达式去掉字符串中的数字 /// <summary> /// 去掉字符串中的数字 /// </summary> /// <param name=" ...

最新文章

  1. Android TextView 中间添加划线与 底部添加划线
  2. 凝聚406万开发者 飞桨十大发布提速产业智能化
  3. 计算机组装比赛看什么书呀,现在学习计算机组装,还有硬体知识,看什么书好?推荐一下...
  4. Leetcode 240.剑指 Offer 06. 从尾到头打印链表 (每日一题 20210728)
  5. 通过operator部署redis集群(ucloud版)
  6. Java 8:使用交替接口公开的类型安全地图生成器
  7. 升级计算机方案,关于计算机升级方案
  8. python骗局-说真的!大家做Python一定不要只会一个方向
  9. GICv3驱动初始化
  10. 建模笔记1:建立数学模型
  11. 清华钱颖一:什么造就了硅谷奇迹?这7个因素不可忽视
  12. 车牌识别平台开源(支持蓝牌、绿牌,准确率高达96%)
  13. 射频电路PCB的设计技巧
  14. play框架使用起来(6)
  15. 哈尔滨傲澜智伴机器人_智伴机器人品质保证(在线咨询),机器人
  16. vscode环境配置:附注有参考链接,便于下载软件。
  17. NLTK01 《NLTK基础教程--用NLTK和Python库构建机器学习应用》
  18. scp或者ssh报错“no matching host key type found. Their offer: ssh-rsa,ssh-dss“
  19. 【单片机基础】单片机的时序概念
  20. 转来的,以前就看到过,但是现在每次看都有一种受益匪浅的感悟

热门文章

  1. 04---项目后端业务实现
  2. 美通企业日报 | 中国最佳表现城市榜成都再登榜首;迪丽热巴代言澳洲品牌Swisse...
  3. 《opencv学习笔记》-- 感兴趣区域(ROI)、图像混合
  4. DLL load failed while importing _imaging怎么处理
  5. c语言中符号常量的作用 定义,c语言常量定义规则知识点总结
  6. w7系统计算机更改用户名,win7系统用户名不能修改的解决方法
  7. 凸性与久期在python中实现
  8. 软件项目的项目经理不懂技术,能做好项目经理么?
  9. 树莓派python扫描蓝牙
  10. PCI/PCIe的学习笔记