2014-07-18 28 views
6

Có khả năng thay đổi SUBTYPE của trường BLOB không?Firebird 2.5.2 thay đổi blob subtype

Tôi có một BLOB với SUBTYPE Binary một nhu cầu để thay đổi nó để SUBTYPE TEXT, vì tôi nhận được một số nhân vật lạ vào BLOB và trong một BLOB với SUBTYPE TEXT tôi không có vấn đề này

+0

Ý anh là gì với nhân vật kỳ lạ '? Loại nhị phân phụ cho dữ liệu nhị phân, không dành cho dữ liệu ký tự. –

+0

ASCII char 255 và 254. Tôi có một bảng khác mà kiểu con là Văn bản trong bảng này ký tự không tồn tại – FlixLux

+0

ASCII chỉ được chuyển đến 127. Bạn mong đợi những ký tự nào cho byte 255 và 254? –

Trả lời

7

Trực tiếp thay đổi kiểu phụ của một cột blob là không thể (cố gắng để làm điều này sẽ cung cấp cho các lỗi "không thể thay đổi kiểu dữ liệu cho cột BLOBCOLUMN. thay đổi kiểu dữ liệu không được hỗ trợ cho các cột BLOB hoặc ARRAY.")

Bạn sẽ cần phải

  1. Thêm một cột mới với một bộ ký tự rõ ràng (tôi giả sử cửa sổ 1252 dựa trên ý kiến ​​của bạn)

    ALTER TABLE table_name 
        ADD blobcolumn_new BLOB SUB_TYPE TEXT CHARACTER SET WIN1252 
    
  2. Sao chép dữ liệu từ cột cũ sang cột mới:

    UPDATE table_name SET blobcolumn_new = blobcolumn 
    
  3. Drop cột cũ

    ALTER TABLE table_name 
        DROP blobcolumn 
    
  4. Đổi tên n cột ew

    ALTER TABLE table_name 
        ALTER COLUMN blobcolumn_new TO blobcolumn 
    
Các vấn đề liên quan