2014-07-18 85 views
6

是否有更改BLOB字段的SUBTYPE的可能性?Firebird 2.5.2更改blob子類型

我有亞型BINARY一個BLOB的需要改變它亞型TEXT,因爲我得到一些奇怪的字符轉換成BLOB和亞型TEXT一個BLOB我沒有這個問題

+0

你是什麼意思與 '奇怪的字符'?二進制子類型用於二進制數據,不適用於字符數據。 –

+0

ASCII字符255和254. 我有另一個表的子類型是文本在這個表中這個字符不存在 – FlixLux

+0

ASCII只能到127.你期望字節255和254是什麼字符? –

回答

7

直接改變BLOB列的亞型是不可能的(嘗試做到這一點會給出錯誤「無法爲列BLOBCOLUMN更改數據類型。改變不支持BLOB或陣列列的數據類型。」

您需要

  1. 添加一個新列有明確的字符集(我假設根據您的評論窗口1252)從舊的列到新列

    ALTER TABLE table_name 
        ADD blobcolumn_new BLOB SUB_TYPE TEXT CHARACTER SET WIN1252 
    
  2. 的數據複製:

    UPDATE table_name SET blobcolumn_new = blobcolumn 
    
  3. 刪除舊列

    ALTER TABLE table_name 
        DROP blobcolumn 
    
  4. 重命名第n EW列

    ALTER TABLE table_name 
        ALTER COLUMN blobcolumn_new TO blobcolumn