2011年8月29日 星期一

Oracle PL/SQL : ASCIISTR 檢測資料有無亂碼


今天早上在一位先進(昭佑.天翔)的網站發現了一個很實用的DB Function : ASCIISTR
可以用來偵測資料庫內的資料有無存在亂碼的問題.
故就上網找一下其原文說明:

ASCIISTR takes as its argument a string in any character set and returns an ASCII string in the database character set. The value returned contains only characters that appear in SQL, plus the forward slash (/).
Syntax
>─ASCIISTR──('string')──><
SQL Example
The following example returns the ASCII string equivalent of the text string "flauwekul":
SELECT ASCIISTR('flauwekul') FROM DUAL;

ASCIISTR('FLAUW
---------------
\6<65\756<\6700


========================================
***以下是昭佑.天翔前輩的文章內容***
(該先進的網站有很多我們可以學習的地方,各位同好可將其加入最愛~~)

Oracle PL/SQL ,
要檢查資料有無亂碼,
可以透過 ASCIISTR 這個函數,
而在 Big5 DB , 亂碼 Ascii \FF1F,
範例 :
-- 建立 Temp Table

CREATE TABLE TOM1(

  AA VARCHAR2(100)

);

 

--
新增測試資料

INSERT INTO TOM1 VALUES( '
' );

INSERT INTO TOM1 VALUES( '
國囯Å' );

COMMIT;

 

--
查詢資料, 與其對應的 Ascii

/*
結果顯示

AA          ASCIISTR(AA)

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

          \570B

國??       \570B\FF1F\FF1F

*/

SELECT AA, ASCIISTR(AA)

  FROM TOM1;

 

--
查詢有亂碼的資料

/*
結果顯示

AA          ASCIISTR(AA)

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

國??       \570B\FF1F\FF1F

*/

SELECT AA

  FROM TOM1

 WHERE ASCIISTR(AA) LIKE '%\FF1F%';

 

--
刪除 Temp Table

DROP TABLE TOM1;

沒有留言:

張貼留言