问题描述
我正在从存储过程中查询字段,我想在存储过程中将其格式化为社会安全号码。
如何在Oracle中像xxx-xx-xxxx一样格式化xxxxxxxxx?
我知道我能做到:
从对偶中选择TO_CHAR(012345678,'000g00g0000 ','nls_numeric_characters =.-') ssn;
或者
SUBSTR(data,1,3) | | '-' | | SUBSTR(data,4,2) | | '-' | | SUBSTR(data,6,4);
But my biggest concern is that the field may have many ssn separate by commas. F或者example :
1) 012345678
2) 012345678,876543210
3) 123456789、987654321、234567890
4)...
如何在Oracle中像xxx-xx-xxxx一样格式化xxxxxxxxx?
我知道我能做到:
从对偶中选择TO_CHAR(012345678,'000g00g0000 ','nls_numeric_characters =.-') ssn;
或者
SUBSTR(data,1,3) | | '-' | | SUBSTR(data,4,2) | | '-' | | SUBSTR(data,6,4);
But my biggest concern is that the field may have many ssn separate by commas. F或者example :
1) 012345678
2) 012345678,876543210
3) 123456789、987654321、234567890
4)...
专家解答
有各种方法可以做到这一点。例如,您可以将逗号分隔的数字分成几行。然后你可以应用上面的技术。
但是,如果您想将所有内容保留在同一行中,则可以使用正则表达式。将括号包装在表达式周围以找到N个字符。然后在用连字符分隔的替换中使用反向引用。例如:
但是,如果您想将所有内容保留在同一行中,则可以使用正则表达式。将括号包装在表达式周围以找到N个字符。然后在用连字符分隔的替换中使用反向引用。例如:
with rws as ( select '123456789,987654321,234567890' str from dual union all select '012345678,876543210' str from dual ) select regexp_replace(str, '([0-9]{3})([0-9]{2})([0-9]{4})', '\1-\2-\3') fmt from rws; FMT 123-45-6789,987-65-4321,234-56-7890 012-34-5678,876-54-3210复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle DataGuard高可用性解决方案详解
孙莹
504次阅读
2025-03-26 23:27:33
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
484次阅读
2025-04-15 17:24:06
墨天轮个人数说知识点合集
JiekeXu
405次阅读
2025-04-01 15:56:03
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
398次阅读
2025-04-08 09:12:48
Oracle SQL 执行计划分析与优化指南
Digital Observer
375次阅读
2025-04-01 11:08:44
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
362次阅读
2025-04-18 14:18:38
Oracle 19c RAC更换IP实战,运维必看!
szrsu
344次阅读
2025-04-08 23:57:08
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
316次阅读
2025-04-15 14:48:05
oracle定时任务常用攻略
virvle
316次阅读
2025-03-25 16:05:19
风口浪尖!诚通证券扩容采购Oracle 793万...
Roger的数据库专栏
312次阅读
2025-03-24 09:42:53