You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle中实现含特殊字符的字符串全转为*的正则表达式需求

Oracle正则表达式实现全字符替换为星号(*)

没问题,我给你一个简单直接的Oracle正则表达式方案,能完美把字符串里**所有字符(包括特殊符号、下划线、数字、字母等)**全部替换成星号。

核心实现语句

使用Oracle内置的REGEXP_REPLACE函数即可完成需求,核心语法如下:

REGEXP_REPLACE(your_string, '.', '*', 1, 0)

参数详解

我来拆解一下每个参数的作用,方便你理解:

  • your_string:要处理的目标字符串(可以是表中的列名,也可以是具体的字符串常量)
  • '.':正则通配符,匹配任意单个字符(覆盖字母、数字、下划线、特殊符号等所有可见字符)
  • '*':替换后的目标字符,也就是你需要的星号
  • 1:指定从字符串的第1个字符位置开始匹配
  • 0:表示替换所有匹配到的字符(如果设为1只会替换第一个匹配项,这里要全替换所以用0)

示例验证

针对你给出的示例abc_d$,执行以下SQL语句:

SELECT REGEXP_REPLACE('abc_d$', '.', '*', 1, 0) AS masked_string FROM DUAL;

返回结果就是:******,完全符合你的需求。

扩展:处理含换行符的字符串

如果你的字符串可能包含换行符这类控制字符(Oracle默认的.不会匹配换行),想要一并替换的话,可以把正则模式改成'[\s\S]'(\s匹配空白字符含换行,\S匹配非空白字符,合起来覆盖所有字符),示例语句:

SELECT REGEXP_REPLACE('abc_d$\nxyz123', '[\s\S]', '*', 1, 0) AS masked_string FROM DUAL;

执行后会把换行也替换成星号,得到长度为12的星号字符串。

内容的提问来源于stack exchange,提问作者Ankit Mongia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:42:58