2024年10月16日 星期三

Oracle 利用正規表達式取代特殊字元

 WITH test_data (text_value) AS

(

SELECT 'A12345678' FROM DUAL UNION ALL

SELECT 'a12345678' FROM DUAL UNION ALL

SELECT 'A1234567' FROM DUAL UNION ALL

SELECT 'A123456789' FROM DUAL UNION ALL

SELECT '$12345678' FROM DUAL UNION ALL

SELECT '中文A1234567_$' FROM DUAL

)

SELECT td.text_value,

REGEXP_REPLACE(

td.text_value, '[^a-zA-Z0-9一-龥]', ''

) AS CLEANED_TEXT

FROM test_data td;


解析: [^...]: 方括號中的插入符號 (^) 表示取反。這表示它將匹配任何不在括號內列出的字元。 a-zA-Z: 這部分匹配任何小寫(a-z)或大寫(A-Z)的英文字母。 0-9: 這匹配任何從 0 到 9 的數字。 一-龥: 這個範圍匹配常用的中文字符。一(U+4E00)到 龥(U+9FA5)包含了相當大部分的中日韓統一表意文字。