oracle 字段带数字,Oracle字符串中包含数字、特殊符号的排序
问题描述:
某小区,需要按照小区、楼栋、单元号、房间号进行排序,但是按照地址描述排序时,因为字符串中包含数字,所以造成了如下的结果,
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字符串中包含数字、特殊符号的排序相关推荐
- 【SQL开发实战技巧】系列(十二):三问(如何对字符串字母去重后按字母顺序排列字符串?如何识别哪些字符串中包含数字?如何将分隔数据转换为多值IN列表?)
系列文章目录 [SQL开发实战技巧]系列(一):关于SQL不得不说的那些事 [SQL开发实战技巧]系列(二):简单单表查询 [SQL开发实战技巧]系列(三):SQL排序的那些事 [SQL开发实战技巧] ...
- Oracle MySQL Hive sql判断字符串中包含某个字符的个数
用length函数求出字符串长度,再对源数据中某个字符去掉求字符串长度,两个长度相减,得出包含某个字符的个数 MySQL所有版本: select length('2022-11-16') - leng ...
- python从含有汉字和数字的字符串中提取数字部分
问题:从字符串"1小时12分钟"中(其中两个数字是变化的)截取出1和12.或者说"共12页"截取出12 切片的方法比较简单,但不适合变化的字符串. filter ...
- Bailian2888 字符串中的数字【字符串】
字符串中的数字 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个字符串,长度不超过20,字符串中包含数字和非数字字符,将其中是数字的字符提取出来,对它们进行从小到大排序,非数字字 ...
- Oracle字符串里有单引号,oracle字符串中包含单引号
1.关于在字符串中包含单引号 字符串是引用字符串的,如果字符串本身就包含单引号怎么办? 用2个单引号表示或者以q或Q开头,然后后面是字符串,字符串的第1个字符和最后结束的字符是分割符号,中间的引 ...
- 包含数字和指定字符的正则表达式_Excel公式练习39: 求字符串中的数字组成的数能够被指定数整除的数的个数...
学习Excel技术,关注微信公众号: excelperfect 导语:继续研究来自于excelxor.com的案例.这个案例比较复杂,需要仔细研究. 本次的练习是:在单元格A1中输入一个任意长度的字母 ...
- 遍历这些字符串,如果字符串没有包含数字的,就将字符串中的小写字母转成大写字母并打印字符串
package cn.silence;public class StrDemo3 {/*** 有如下字符串:"12ab","java","cd&quo ...
- 遍历这些字符串,如果字符串没有包含数字的, * 就将字符串中的小写字母转成大写字母并打印字符串
package Day08;import java.util.Scanner;/*** 有如下字符串:"12ab","java","cd", ...
- java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字_灵思致远Leansmall的博客-CSDN博客_java判断字符串只包含数字字母
import java.util.regex.Matcher; import java.util.regex.Pattern;public class StrValidate {// 纯数字priva ...
- 统计字符串中包含了多少个数字,多少个字母
package javaSE11_String类;import java.util.Scanner;/*练习三: * 提示用户 输入一个字符串 * 统计字符串中包含了多少个数字,多少个字母*/ pub ...
最新文章
- python实现glove,gensim.word2vec模型训练实例
- keras 与tensorflow绑定在一起用的,何以见得
- 用Fiddler抓取手机APP数据包
- 2019 GDUT Rating Contest II : Problem G. Snow Boots
- OpenGL学习笔记(2) 画一个正方形
- COM原理与应用之COM的实现
- perl语言入门第七版中文_网站编程语言的选择
- CTS/APIO后文化课游记
- NOIP2015 D1 解题报告
- 30岁,真的是程序员迈不过去的坎吗?
- Python解决列表字符不区分大小写问题
- ascii码java生成_Java 生成 ASCII 字符画 实现代码
- Spring Boot基础学习笔记25:RabbitMQ - 发布/订阅工作模式
- 随机数算法 java_最全的java随机数生成算法
- Symbian 之浏览器
- Unity为游戏添加背景音乐
- Android DataBing基础使用 +ViewModel 及setvalue过程及原理
- iphone6安装android,在iPhone里装了真 Android系统 这事情已经很神奇了
- 探索鼎龙湾德萨斯牛仔小镇,欣赏粤西非遗文化的魅力
- linux: ubuntu 21.04 安装搜狗拼音输入法