2021年9月30日 星期四

COBOL & DB2 中文字的處理

 古時候的DB2儲存中文字會在前後用0E跟0F框起來,但後人在改寫存取時沒處理好COBOL讀取時就會變成亂碼0E0F湊起來就佔了2 BYTES,也會讓欄位要塞好塞滿時得先扣掉2bytes才行,這部分要記好別踩坑。


直接更新下指令如果兩個TABLE長度不一樣,如TABLEA.CNNAME(14)而TABLEB.CNNAME2(20),就可以透過下列語法來塞值。

UPDATE TABLEA SET CNNAME=(SELECT CONCAT(LEFT(CNNAME2,13), X'''0F''') FROM TABLEB WHERE KEY=?) WHERE KEY2=?;

沒有留言: