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)包含了相當大部分的中日韓統一表意文字。

2024年3月8日 星期五

[PLSQL]EXIT/RETURN/CONTINUE

exit 結束循環, 跳出這個循環, 繼續執行後續程式

return 直接結束整個程式

continue 中止這個循環, 跳下一循環

-----------------------------------
exit範例:

DECLARE

i NUMBER;

BEGIN

FOR i IN 1..3

LOOP

IF (i MOD 2 = 0 ) THEN

dbms_output.put_line('遇到偶數');

dbms_output.put_line('EXIT:跳出循環');

EXIT;

END IF;

dbms_output.put_line('i='||i);

END LOOP;

dbms_output.put_line('END LOOP');

END;

-----------------

i=1

遇到偶數

EXIT:跳出循環

END LOOP

-----------------

--return範例:

DECLARE

i NUMBER;

BEGIN

FOR i IN 1..3

LOOP

IF (i MOD 2 = 0 ) THEN

dbms_output.put_line('遇到偶數');

dbms_output.put_line('RETURN:結束整個程式');

return;

END IF;

dbms_output.put_line('i='||i);

END LOOP;

dbms_output.put_line('END LOOP');

END;

-----------------

i=1

遇到偶數

RETURN:結束整個程式

-----------------

continue範例:

DECLARE

i NUMBER;

BEGIN

FOR i IN 1..3

LOOP

IF (i MOD 2 = 0 ) THEN

dbms_output.put_line('遇到偶數');

dbms_output.put_line('CONTINUE:跳出這個循環 下一循環');

continue;

END IF;

dbms_output.put_line('i='||i);

END LOOP;

dbms_output.put_line('END LOOP');

END;

-----------------

i=1

遇到偶數

CONTINUE:跳出這個循環 下一循環

i=3

END LOOP

-----------------