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

问题描述:

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

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

077b0a316ff435e51c0f595213fa7d7f.png

尝试解决

使用正则表达式替换

be06323aebb55c549376f292011083e8.png

结果:

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

终极办法:

使用translate函数

cfd12ce70e372e0581cd6faaeeb30641.png

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

以下附上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 NLS参数深度解析:从字符集到排序规则,彻底解决乱码与全球化数据难题 在数据库管理与应用开发中,字符编码与国际化支持是确保数据准确存储、处理显示的核心基础。其原理在于通过一套环境变量体系,定义数据库的字符集、排序规则、日期格式等本地化属性,从而实现对多语言数据的无缝处理。这项技术的价值在于保障全球化应用中的数据一致性,避免因环境不匹配导致的乱码、排序错误或格式解析异常。典型应用场景包括跨国系统集成、多语言数据迁移、以及需要支持特殊字符(如Emoji)的现代Web应用。本文聚焦Oracle NLS参数体系,深入剖析其四大层级优先级、核心参数(如NLS_CHARACTERSET 阅读详情

相关推荐

第10章:位同步与Gardner环路(1)

第10章(1)内容如下:一、位同步与载波同步的区别1、采样钟相位偏差的影响2、采样钟频率偏差的影响二、Gardner环路算法与插值方法1、插值滤波器2、Gardner误差检查算法三、Gardner环路中环路滤波器与数字振荡器设计1、环路滤波器2、数控振荡器(NCO)四、Gardner环路的可运行MATLAB代码五、参考资料六、致谢 最近搞懂了Gardner环路的一些知识,于是更新第10章——位同步。 如果你稍不留意的话,这可能是你在网上能看到的介绍Gardner环路及其MATLAB仿真最详细的一篇文章了

weixin_44283855的博客 1万+

解决Oracle字符串包含数字特殊符号排序问题

问题描述:   某小区,需要按照小区、楼栋、单元号、房间号进行排序,但是按照地址描述排序,因为字符串包含数字,所以造成了如下的结果, 1号楼之后应该是2号楼,但是查询结果却是10号楼 。   尝试解决   使用正则表达式替换   结果:   虽然楼栋号排序正常了,但是会发现房间号排序出现了混乱。  继续想办法   终极办法:   使用translate函数 可以发现,结果正常显示 。 以下附上translate使用方法 一、语法: TRANSLATE(string,from_str,to_str) 二、目的 返回将(所有出现的)from_str中的每个字符替换为to_str中的

全志 T527_Android13 编译 [ 避坑必看 ]

Swap 概念: Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。它的功能就是在内存不够的情况下,操作系统先把内存中暂不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行。当输入编译命令make -j16 的候,会有如下提示,这是官方建议通过减少编译线程来解决编译消耗内存过大的问题。Android 13 系统的编译流程,编译一共分为两部分:内核编译与 Android 编译。

公众号:嵌入式分享 2055

Oracle中对字符串类型的数字正确排序

一、使用【ORDER BY 字段 ASC】对字符串类型数字排序得不到想要的结果 SELECT 字段名称 FROM 表名称 ORDER BY 字段名称 ASC 二、问题分析 因为排序字段字符串类型,所以【排序字符从左向右依次比较】 三、解决方法 ①使用Oracle中的【CAST】函数将字段转为数字类型然后再排序即可 //CAST函数转换字段类型 CAST(字段名称 AS 数字类型) //比如:将Varchar字段BINN转为INTEGER类型 CAST(BINN AS INTEG.

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 1万+

Oracle——按数字排序

Oracle语句中,含数字字符串数字排序 1.由数字组成的字符串,按数字排序 方法:通过to_number()函数将数字字符串转化为数字,再排序 select * from student order by to_number(studentid) 2.字符串包含数字,按数字排序 例如: 第0328号 第0121号 第1237号 第1836号 第1153号 解决办法...

命中的缘分的博客 7830

oracle排序问题

在工作中遇到一个排序问题,很简单的用了排序函数,但是在功能上线了几天,发现排序不对,发现一个数字字符串排序会引发这么多的问题,欢迎一起探讨。

Mao_yafeng的博客 1637

Oracle数字字符串排序

在进行查询排序候,发现字段中是数字字符串,如果按照正常排序的话会出现1万、10万、2万、20万、5万的结果,但是我需要的结果是1万、2万、5万、10万、20万的结果。用Oracle中自的to_number(regexp_substr(字段,’[0-9]*[0-9]’),1)即可。如果order by 后面有多个字段,且需要进行函数处理的字段不是排在第一位,不加to_number的话,这个函数是没有效果的 ,如果紧跟着order by就可以不用to_number。 注意:如果这个字段包含“5万-

m0_37419027的博客 2175

oracle字符串排序

oracle字符串排序oracle字符串排序oracle字符串数字部分排序 oracle字符串排序 select * from table order by to_number(id) oracle字符串数字部分排序 用正则 select * from table order by to_number(regexp_replace(id,'[^0-9]')) ...

weixin_50279139的博客 3679

mysql 对特殊符号排序_Oracle字符串包含数字特殊符号排序问题解决方法

本文将大家分享Oracle字符串包含数字特殊符号排序问题解决方法。最近做项目遇到这样的需求,要求实现某小区需要按照小区、楼栋、单元号、房间号进行排序。看似很简单的一个需求,一条sql语句搞定,其实套路很深,下面小编给大家分享下Oracle字符串包含数字特殊符号排序问题,希望能帮助到大家。问题描述:某小区,需要按照小区、楼栋、单元号、房间号进行排序,但是按照地址描述排序,因为字符串中...

weixin_30212009的博客 707

oracle 字段数字,Oracle字符串包含数字特殊符号排序

问题描述:某小区,需要按照小区、楼栋、单元号、房间号进行排序,但是按照地址描述排序,因为字符串包含数字,所以造成了如下的结果,1号楼之后应该是2号楼,但是查询结果却是10号楼 。尝试解决使用正则表达式替换结果:虽然楼栋号排序正常了,但是会发现房间号排序出现了混乱。 继续想办法终极办法:使用translate函数可以发现,结果正常显示 。以下附上translate使用方法一、语法:TRANSL...

weixin_28676973的博客 1047

Oracle 之 过滤排序

过滤排序 1.过滤 •使用WHERE 子句,将不满足条件的行过滤掉。 •WHERE 子句紧随 FROM 子句。 例如:返回在 90号部门工作的所有员工的信息 SELECT employee_id, last_name, job_id, department_id FROM employees WHERE department_id = 90 ; 1.1 过滤条件中存在字符...

z_x_Qiang的博客 340

踩坑记:ORA-01722 无效数字错误排查与解决(附实战案例)

摘要 ORA-01722无效数字错误是Oracle开发中常见问题,本文通过电商订单报表查询案例,分析了该错误的本质——Oracle隐式类型转换失败。文章详细展示了排查过程:首先锁定多表JOIN关联中的数字字符类型字段不匹配问题,然后通过数据检查发现物流单号字段存在非数字内容(如字母、空字符串等)。解决方案包括:1)临数字转为字符类型;2)长期规范方案——清理脏数据并统一字段类型;3)预防机制建议。最终提供了修正版SQL,通过显式类型转换避免了隐式转换错误。

xiaoyezhiei的博客 1755

Oracle学习笔记

本机连接虚拟机中的Oracle数据库 Oracle中sql语句可以实现清屏命令是host cls Oracle中查看数据库的命令是show user; 在Oracle中user被看作是数据库 Oracle与mysql不同的是查看表是select * from tab; 今天学习主要操作emp表 基本查询一概省略,只是将需要注意的点进行赘述演示 别名设置 如果别名是数字或有空格等...

Distance的博客 220

玩转oracle之必备oracle命令

oracle的常用命令

weixin_47088026的博客 817

oracle 左边第一位,Oracle学习笔记(一)

一.基本的查询语句,特殊符号||。制定列的别名AS,唯一标示distinct1.字符连接符“||”与“+”符oracle:select 列名||'111111111111111' from 表名sql:select 列名+'111111111111111' from 表名T2“AS”符号oracle:select 列名 as 新列名 from 表名 (空格,不能有as)新表名sql:sele...

weixin_32309375的博客 926

Oracle - 简单的 SELECT 的使用

Oracle -SELECT 及过滤排序 一、SELECT的基本使用 > 查询返回所有数据:select * from tablename; > 查询返回一部分字段:select 字段1,字段2 from tablename; > 列的别名一般用双引号,以便在别名中包含空格或特...

weixin_34186128的博客 295

oracle简单的查询

1.oracle简单的查询 1.使用password命令修改密码 password 2.退出sqlplus工具 exit 3.查询当前用户 show user 4.查询hr用户下的所有对象,使用tab表,tab表每个用户下都有,作用是查询该用户都有哪些表 select * from tab; 5.设置显示的列宽(字符型) column 列名 format a16; 6.设置显示的列宽(数字型)只能...

z19799100的博客 966

oracle数据库教程笔记

20200217 1、desc emp; 查看emp表的表结构,显示emp表的字段字段类型 2、select empno as "编号",ename "姓名",job 月薪 from emp; 给empno、ename、job起别名,如果在起别名,遇到一些特殊符号:空格,则需要用引号引起来。例如以下必须加引号:*、 from等。 3、清屏 host cls 4、数据类型 va...

lassielv的博客 456

oracle full(表名),Oracle学习笔记(一)

一.基本的查询语句,特殊符号||。制定列的别名AS,唯一标示distinct1.字符连接符“||”与“+”符oracle:select 列名||'111111111111111' from 表名sql:select 列名+'111111111111111' from 表名T2“AS”符号oracle:select 列名 as 新列名 from 表名 (空格,不能有as)新表名sql:sele...

weixin_39951018的博客 724

Oracle 基础】基本查询

一、基本语法 语法: select * |{[distinct] 列名 |表达式 [别名],...} from 表名 [where 查询条件][order by [asc|desc]] 二、语法解析 (一) *代表查询所有列 (二) distinct 去重 (三) 别名、连接符||、字符串 列的别名能够改变列的显示标题,可以直接跟在列名后面,也可以中间加as,如果别名中包含空格及特殊字符或者去...

Mercy92的博客 362

基于ST VL53L0的TOF激光测距机器人扫地机解决方案-电路方案

这两年来,AI技术的迅猛发展,无人驾驶汽车热度疯狂,智能产品的不断涌现,图像识别、语音识别、神经网络感知等人工智能正处于难得的发展机遇期,人工智能实体经济融合进一步深化,智能化产品也源源不断地涌现。产品智能化就需要大脑主控芯片各种各样的sensor,ST现有推出一款TOF激光测距sensoor VL53L0,高精度测距,可以用于机器人、无人机、扫地机、手机等。目前ST推出VL53L0+ STM32F401RE智能机器人扫地方案。核心技术优势1、前、后、左、右各装一个VL53L0激光测距sensor, 每个sensor发射940nm波长非可见光,通过TOF测出各方向的距离, 通过软件计算,得出房子环境空间的布局情况。2、可以设定多种清扫模式。包括沿边清扫、集中清扫、随机清扫、直线清扫等工作模式。3、设定好清扫模式后,可以开始清扫操作,如遇难到障碍物,会自动避让,自动选择最佳的行进路线。4、清扫完成后,机器会自动停机方案规格1.STM32F401REVL53L0都是ST自产芯片,ST MCU具有极高的性价比,市面普及度也高。2.VL53L0功耗低、体积小,正常工作模式下功耗仅20mW,待机功耗只有5µA。封装尺寸为2.4mm x 4.4mm x 1mm,业界目前体积最小的同类产品,同支持手势识别。3.距离测量精度高,可以达毫米级。4.测量距离最长可达2米。5.ST可以提供基于STM32F401REVL53L0软件开发包。6.可以外扩一块蓝牙模块重力、陀螺sensor,进行更精确的运动轨迹操控手机APP操作。7.VL53L0可以同挂载多颗。8.VL53L0采用快速响应的FlightSenseTM技术。方案来源于大大通。

上一篇: php manual zh.chm,PHP手册 - Using PHP Manual CHM Edition
下一篇: oracle oci parse,oci连接Oracle
英伦百宝箱
博客等级 码龄9年 26粉丝 85原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值