2012-10-04 54 views
5

Sự hiểu biết của tôi là loại dữ liệu dài có thể lưu trữ chuỗi thực tế (ký tự), trong khi loại dữ liệu thô dài lưu trữ các giá trị nhị phân của chuỗi (ký tự). Đúng không? Bảng có thể chỉ có một cột loại dài không?sự khác nhau giữa các kiểu dữ liệu thô dài và dài trong Oracle là gì?

+1

Các kiểu dữ liệu dài của Oracle chỉ khả dụng cho khả năng tương thích ngược. Nhìn tốt hơn vào các kiểu dữ liệu BLOB/CLOB. – Rene

Trả lời

10

Các kiểu dữ liệu được mô tả trong tài liệu; LONG is explained here (hoặc 11gR2 version):

cột DÀI cửa hàng chuỗi ký tự chiều dài thay đổi chứa lên đến 2 GB -1, hoặc 231-1 byte. Cột dài có nhiều đặc điểm của cột VARCHAR2. Bạn có thể sử dụng các cột DÀI để lưu trữ chuỗi văn bản dài.

LONG RAW is here:

Các RAW và DÀI RAW kiểu dữ liệu lưu trữ dữ liệu mà không phải là để được giải thích (có nghĩa là, không rõ ràng chuyển đổi khi di chuyển dữ liệu giữa các hệ thống khác nhau ) bởi Cơ sở dữ liệu Oracle. Các kiểu dữ liệu này là dành cho dữ liệu nhị phân hoặc chuỗi byte. Ví dụ: bạn có thể sử dụng LONG RAW để lưu trữ đồ họa, âm thanh, tài liệu hoặc mảng dữ liệu nhị phân , mà việc giải thích phụ thuộc vào việc sử dụng.

Vì vậy, RAW hoặc LONG RAW có thể chứa ký tự đại diện nhị phân, vì vậy có lẽ không hữu ích cho điều đó; có thể chứa bất kỳ dữ liệu nhị phân nào khác - bất kỳ thứ gì không được cho là đại diện cho văn bản.

Từ cùng một phần LONG:

Một bảng có thể chứa chỉ có một cột LONG.

Tuy nhiên, LONG được phản đối ủng hộ LOB (CLOB hoặc NCLOB cho văn bản, BLOB cho mọi thứ khác), vì vậy bạn không nên sử dụng chúng cho công việc mới, và ít nhất cần được xem xét thay thế bất kỳ mà bạn đã có. Một lần nữa từ phần đó trên LONG:

Không tạo bảng có cột DÀI. Sử dụng các cột LOB (CLOB, NCLOB, BLOB) để thay thế. Cột dài chỉ được hỗ trợ cho tương thích lạc hậu.

Oracle cũng khuyên bạn nên chuyển đổi cột DÀI hiện tại thành LOB cột.

Điều này documentation on migrating from LONG to LOB có thể được quan tâm.

Các vấn đề liên quan