暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 基于子字符串长度的左填充字符串

ASKTOM 2020-02-12
295

问题描述

嗨,克里斯,
我想通过调整输入字符串中的所有数字 (在下面的示例中的 'MFT' 之后) 来限制输入字符串的长度为8个字符。
表示,想要容纳字符串中的所有数字。

Ex.1。输入字符串为 “MFT123456”-9个字符字符串
预期输出应为: 'mf123456 '-通过删除单个字符 'T' 并将所有数字向左移动,将字符串限制为8个字符。

Ex.2. 输入字符串为 “LCC1234567”
预期输出字符串 = 'l1234567'

我试图使用下面的逻辑来实现这一点。但它不适用于第二个示例,并为此寻找动态解决方案。

当长度 ('mft123456')> 8时选择大小写
当SUBSTR ('mft123456 ',1,3) = 'MFT',然后SUBSTR ('mft123456',1,2) | | SUBSTR ('mft123456 ',4)
结束
结束 AS PIN;

专家解答

我们可以查找第一个数字的位置,并将其与长度进行比较

SQL> with t as
  2  ( select  'MFT123456' x from dual union all
  3    select  'LCC1234567' x from dual )
  4  select
  5    substr(x,1,7-length(x)+regexp_instr(x,'\d'))||  regexp_substr(x,'\d+') str
  6  from t;

STR
--------------------------------------------------------------------------------
MF123456
L1234567
复制


文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论