Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 删除Oracle字符串数据中除连字符和空格以外的特殊字符_Sql_Regex_Oracle_Formatting - Fatal编程技术网

Sql 删除Oracle字符串数据中除连字符和空格以外的特殊字符

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(

我需要使用Reg_replace函数删除Oracle字符串数据中除连字符和空格以外的所有特殊字符。请提供帮助。例如:

输入->我的名字是name1输出->我的名字是name1

输入->这是我的添加ress输出->这是我的添加ress

输入->我们可以删除这个吗;输出->我们可以删除这个吗


您可以使用以下命令

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