Db2
DB2:為什麼翻譯函式也替換空格?
我想從 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 空白。