在 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;