Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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表中删除非ASCII值_Sql_Oracle_Plsql - Fatal编程技术网

Sql 从Oracle表中删除非ASCII值

Sql 从Oracle表中删除非ASCII值,sql,oracle,plsql,Sql,Oracle,Plsql,如何使用PL/SQL从Oracle中的表中删除非ASCII值?假设您有一个包含一些非字母数字字符的VARCHAR2列的表,则可以用SQL语句替换它们。您可以从以下内容开始,并对其进行优化以满足您的需要: UPDATE mytable x SET x.col = REGEXP_REPLACE(x.col, '[^[:alnum:] ]', ' ') WHERE REGEXP_LIKE (x.col, '.*[^[:alnum:]].*') 此语句使用正则表达式试图用空格替换所有非字母数字

如何使用PL/SQL从Oracle中的表中删除非ASCII值?

假设您有一个包含一些非字母数字字符的VARCHAR2列的表,则可以用SQL语句替换它们。您可以从以下内容开始,并对其进行优化以满足您的需要:

UPDATE mytable x
   SET x.col = REGEXP_REPLACE(x.col, '[^[:alnum:] ]', ' ')
 WHERE REGEXP_LIKE (x.col, '.*[^[:alnum:]].*')
此语句使用正则表达式试图用空格替换所有非字母数字字符。如果希望保留其他所需字符(如逗号),可能需要进行调整


当然,如果您的需求比在两列中替换几个字符要复杂得多,那么您可能需要采取不同的方法。如果是这种情况,那么也许您可以扩展您的问题,以提供有关您具体问题的更多信息。

在您的上下文中,非ascii是什么意思?值超出范围0-127?或者,您的意思是,在32到127范围内不可“打印ascii”的值?您需要用更多细节充实您的问题。ASCII只是一种为字符分配数值的机制。所以,表中的数据一直是ASCII码。那么,这是关于Unicode的问题吗?全球化或者区分常规ASCII和扩展ASCII集?注意!这里至少有一个有趣而有价值的问题的核心。请给@shubhra一个机会来完善这个问题。是特定的表/列,还是您需要以某种方式派生表/列?您是包括CLOB还是仅包括VARCHAR2/CHAR 9或NCHAR/NVARCHAR2)。