Sql 删除Oracle字符串数据中除连字符和空格以外的特殊字符
我需要使用Reg_replace函数删除Oracle字符串数据中除连字符和空格以外的所有特殊字符。请提供帮助。例如: 输入->我的名字是name1输出->我的名字是name1 输入->这是我的添加ress输出->这是我的添加ress 输入->我们可以删除这个吗;输出->我们可以删除这个吗Sql 删除Oracle字符串数据中除连字符和空格以外的特殊字符,sql,regex,oracle,formatting,Sql,Regex,Oracle,Formatting,我需要使用Reg_replace函数删除Oracle字符串数据中除连字符和空格以外的所有特殊字符。请提供帮助。例如: 输入->我的名字是name1输出->我的名字是name1 输入->这是我的添加ress输出->这是我的添加ress 输入->我们可以删除这个吗;输出->我们可以删除这个吗 您可以使用以下命令 with t(str) as ( select 'this is my add-ress#&%! : 198' from dual ) select regexp_replace(
您可以使用以下命令
with t(str) as
(
select 'this is my add-ress#&%! : 198' from dual
)
select regexp_replace(str,'[^-0-9A-Za-z ]','') as "Result String"
from t;
Result String
-----------------------
this is my add-ress 198
您可以使用[^[:alnum:]-]作为正则表达式来匹配要替换的值
Oracle安装程序:
查询:
输出:
dbfiddle您可以使用正则表达式,但需要准确定义要删除的内容,或者更简单地说,定义要保留的内容。e、 g.所有字母数字字符加上破折号和空格?句号和逗号呢?等等,它需要多快?这取决于两件事:必须处理多少数据,以及处理的频率。正则表达式解决方案易于编写或维护。或者,您可以编写一个具有更快函数转换的解决方案,但它会更难看。@Alex:是的,我想保留所有字母数字加上破折号和空格。其他所有的东西都需要删除,甚至连逗号都需要删除。@mathguy:大约10万条记录。是的,我正在尝试使用reg_exp函数reg_replace,但无法找到确切的语法。谢谢,这正是我所要找的。
CREATE TABLE test_data( value ) AS
SELECT 'this is my add-ress#\' FROM DUAL UNION ALL
SELECT 'My Name is #name1' FROM DUAL UNION ALL
SELECT 'can we remov-e this' FROM DUAL;
SELECT value,
REGEXP_REPLACE( value, '[^[:alnum:] -]', NULL ) AS replaced_value
FROM test_data
VALUE | REPLACED_VALUE
:-------------------- | :------------------
this is my add-ress#\ | this is my add-ress
My Name is #name1 | My Name is name1
can we remov-e this | can we remov-e this