2010-07-23 46 views
-1

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

+4

在您的上下文中,非ascii是什么意思?范围在0-127之外?或者你的意思是,在32到127范围内的值不是“可打印的ascii”? – 2010-07-23 14:48:53

+3

你需要充实你的问题和更多细节。 ASCII只是一种为数字赋予一个字符的机制。所以,表格中的数据是ASCII,一直向下。那么,这是关于Unicode的问题吗?全球化?或者将普通ASCII与扩展ASCII集区分开来? – APC 2010-07-23 14:51:48

+2

注意力不集中!这里至少有一个有趣和有价值的问题的核心。请给@shubhra一个改进问题的机会。 – APC 2010-07-23 15:08:23

回答

0

假设您有一个包含一些非字母数字字符的VARCHAR2列的表,那么可以用SQL语句替换它们。你可能会开始像这样的东西和完善,以满足您的需求:

UPDATE mytable x 
    SET x.col = REGEXP_REPLACE(x.col, '[^[:alnum:] ]', ' ') 
WHERE REGEXP_LIKE (x.col, '.*[^[:alnum:]].*') 

这种说法,企图用空格替换所有的非字母数字字符使用正则表达式。如果您希望保留其他所需字符(如逗号),则可能需要进行调整。

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