千家信息网

Oracle字符串中包含数字、特殊符号的解决方法是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章为大家展示了Oracle字符串中包含数字、特殊符号的解决方法是什么,代码简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。问题描述:某小区,需要按照小区、楼栋、
千家信息网最后更新 2026年11月01日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代码

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字符串中包含数字、特殊符号的解决方法是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

字符 示例 中国 结果 数字 中国人 方法 排序 字符串 中包 参数 号楼 语法 特殊 符号 一一对应 代码 代表 办法 大写 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 亿人帮互联网科技有限公司 智能科技公司是互联网公司吗 互联网科技有限公司图片 北京互联网科技有限公司 深圳期待互联网科技 国外互联网科技网站 互联网科技有限公司 翻译 互联网科技大会案例 海南购全球互联网科技 重庆互联网医院沙龙医盟信息科技 昊天互联网科技有限公司 未来五年的互联网科技 广西互联网科技孵化中心 互联网时代的科技公司 黑云互联网科技有限公司 杭州披云加互联网科技有限公司 湖北辰鑫科技互联网 六子台科技互联网展会 株洲百竞科技的互联网营销顾问 颐高云石互联网科技 四川狮子座互联网科技 中正互联网科技招聘 海南科技产业互联网平台 小米互联网科技园设置 以后互联网后是啥科技 互联网企业和科技型企业 世界互联网科技公司市值排名 乌鲁木齐新华智原互联网科技学校 互联网行业科技股 网互联网络科技
0