2010-07-23 47 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:]].*') 

這種說法,企圖用空格替換所有的非字母數字字符使用正則表達式。如果您希望保留其他所需字符(如逗號),則可能需要進行調整。

當然,如果您的需求比在幾列中替換幾個字符要複雜得多,那麼您可能需要採取不同的方法。如果是這種情況,那麼也許你可以擴大你的問題,以提供更多關於你的具體問題的信息。