IT序号网

sql之Oracle 去除重复字符

Leo_wl 2024年11月24日 编程语言 12 0

为了实现密码复杂性,我需要一个可以删除重复字符的函数(为了生成满足密码复杂性要求的密码)。所以像 weeeeee1 这样的字符串将不被允许,因为 e 是重复的。我需要一个函数来代替返回 we1,其中重复字符已被删除。必须使用 Oracle PL/SQL 或直接 sql。

我找到了 Oracle SQL -- remove partial duplicate from string ,但这不适用于我的 weeeeee1 测试用例,因为它只替换了一次迭代,因此返回weeee1。

我不是要测试没有重复的字符。我正在尝试将重复字符串更改为非重复字符串。

请您参考如下方法:

我认为您可以使用 regexp_replace 实现您的目标。或者我错过了什么?

select regexp_replace(:password, '(.)\1+','\1')  
  from dual; 

下面是一个例子:
with t as (select 'weeee1' password from dual 
           union select 'wwwwweeeee11111' from dual 
           union select 'we1' from dual) 
 
select regexp_replace(t.password, '(.)\1+','\1')  
  from t; 

生产:
REGEXP_REPLACE(T.PASSWORD,'(.)\1+','\1') 
we1 
we1 
we1 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!