问题描述:

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

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代码

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

2. TRANSLATE (

3. --------------

4. 123456ghij

5.

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

7. TRANSL

8. ----------

9. 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字符串中包含数字、特殊符号的排序相关推荐

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

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

  2. Oracle MySQL Hive sql判断字符串中包含某个字符的个数

    用length函数求出字符串长度,再对源数据中某个字符去掉求字符串长度,两个长度相减,得出包含某个字符的个数 MySQL所有版本: select length('2022-11-16') - leng ...

  3. python从含有汉字和数字的字符串中提取数字部分

    问题:从字符串"1小时12分钟"中(其中两个数字是变化的)截取出1和12.或者说"共12页"截取出12 切片的方法比较简单,但不适合变化的字符串. filter ...

  4. Bailian2888 字符串中的数字【字符串】

    字符串中的数字 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个字符串,长度不超过20,字符串中包含数字和非数字字符,将其中是数字的字符提取出来,对它们进行从小到大排序,非数字字 ...

  5. Oracle字符串里有单引号,oracle字符串中包含单引号

    1.关于在字符串中包含单引号    字符串是引用字符串的,如果字符串本身就包含单引号怎么办? 用2个单引号表示或者以q或Q开头,然后后面是字符串,字符串的第1个字符和最后结束的字符是分割符号,中间的引 ...

  6. 包含数字和指定字符的正则表达式_Excel公式练习39: 求字符串中的数字组成的数能够被指定数整除的数的个数...

    学习Excel技术,关注微信公众号: excelperfect 导语:继续研究来自于excelxor.com的案例.这个案例比较复杂,需要仔细研究. 本次的练习是:在单元格A1中输入一个任意长度的字母 ...

  7. 遍历这些字符串,如果字符串没有包含数字的,就将字符串中的小写字母转成大写字母并打印字符串

    package cn.silence;public class StrDemo3 {/*** 有如下字符串:"12ab","java","cd&quo ...

  8. 遍历这些字符串,如果字符串没有包含数字的, * 就将字符串中的小写字母转成大写字母并打印字符串

    package Day08;import java.util.Scanner;/*** 有如下字符串:"12ab","java","cd", ...

  9. java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字_灵思致远Leansmall的博客-CSDN博客_java判断字符串只包含数字字母

    import java.util.regex.Matcher; import java.util.regex.Pattern;public class StrValidate {// 纯数字priva ...

  10. 统计字符串中包含了多少个数字,多少个字母

    package javaSE11_String类;import java.util.Scanner;/*练习三: * 提示用户 输入一个字符串 * 统计字符串中包含了多少个数字,多少个字母*/ pub ...

最新文章

  1. python实现glove,gensim.word2vec模型训练实例
  2. keras 与tensorflow绑定在一起用的,何以见得
  3. 用Fiddler抓取手机APP数据包
  4. 2019 GDUT Rating Contest II : Problem G. Snow Boots
  5. OpenGL学习笔记(2) 画一个正方形
  6. COM原理与应用之COM的实现
  7. perl语言入门第七版中文_网站编程语言的选择
  8. CTS/APIO后文化课游记
  9. NOIP2015 D1 解题报告
  10. 30岁,真的是程序员迈不过去的坎吗?
  11. Python解决列表字符不区分大小写问题
  12. ascii码java生成_Java 生成 ASCII 字符画 实现代码
  13. Spring Boot基础学习笔记25:RabbitMQ - 发布/订阅工作模式
  14. 随机数算法 java_最全的java随机数生成算法
  15. Symbian 之浏览器
  16. Unity为游戏添加背景音乐
  17. Android DataBing基础使用 +ViewModel 及setvalue过程及原理
  18. iphone6安装android,在iPhone里装了真 Android系统 这事情已经很神奇了
  19. 探索鼎龙湾德萨斯牛仔小镇,欣赏粤西非遗文化的魅力
  20. linux: ubuntu 21.04 安装搜狗拼音输入法

热门文章

  1. 批处理向FTP上传指定属性的文件 批处理增量备份的例子
  2. mysql可重复读理解
  3. 在html文档中添加 iconfont 图标
  4. mysql 创建和查询数据库和表格
  5. 为何不让AI做更正确的抉择?人类要逐渐交出控制权
  6. 在.net framework程序中承载asp.net core
  7. 在Visio里加上、下标方法
  8. C#实现10进制转2进制
  9. 《Unity 4 3D开发实战详解》一6.3 粒子系统
  10. Layui图片上传限制一张的问题