Db2

DB2:為什麼翻譯函式也替換空格?

  • July 18, 2018

我想從 DB2 數據庫欄位中刪除控製字元(HEX \x00 直到 \x7F)。為此,我嘗試應用以下翻譯功能:

TRANSLATE(field, 'X',  x'000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F')

它確實適用於控製字元,但該功能也翻譯問號,我不明白為什麼?有趣的是,問號並沒有像控製字元那樣被“X”代替,而是被空格 \x20 代替。

為什麼它會這樣?

原始值:

Text View: mhlkm
Hex: 6D 68 6C 6B 6D 3F          
Text View in Hex Viewer: mhlkm?

轉換值:

Text View: mhlkm
Hex: 6D 68 6C 6B 6D 20 
Text View in Hex Viewer: mhlkm 

TRANSLATE 中的“to-string”是單個“X”,因此只有“from-string”中的第一個字元(在您的情況下為 X'00’)將被翻譯為“X”。在“from-string”中找到的所有其他字元將被“pad”字元替換。您沒有指定一個,因此預設情況下使用空白。這就是為什麼 inut 欄位末尾的 X'15’ 被轉換為 X'40’,這是一個 EBCDIC 空白。

引用自:https://dba.stackexchange.com/questions/212529