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


在 Oracle PL/SQL 中,

要檢查資料有無亂碼,

可以透過 ASCIISTR 這個函數,

而在 Big5 DB 中, 亂碼 Ascii 為 \FF1F,

另外, 全形問號 ? 的 Ascii 也是 \FF1F, 這會導致檢查時的盲點, 需特別注意.

參考範例, 如下 :
 程式碼
-- 建立 Temp Table

CREATE TABLE TOM1(
AA VARCHAR2(100)
);

-- 新增測試資料
INSERT INTO TOM1 VALUES( '國' );
INSERT INTO TOM1 VALUES( '國?' );
INSERT INTO TOM1 VALUES( '國囯Å' );
COMMIT;

-- 查詢資料, 與其對應的 Ascii
/* 結果顯示
AA ASCIISTR(AA)
---------- ------------------------
國 \570B
國? \570B\FF1F
國?? \570B\FF1F\FF1F
*/

SELECT AA, ASCIISTR(AA)
FROM TOM1;

-- 查詢有亂碼的資料
/* 結果顯示
AA
----------
國?
國??
*/

SELECT AA
FROM TOM1
WHERE ASCIISTR(AA) LIKE '%\FF1F%';

-- 刪除 Temp Table
DROP TABLE TOM1;

Related Posts Plugin for WordPress, Blogger...