Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Xác định Bộ ký tự cho cột Đối với bảng cơ sở dữ liệu oracle

Câu trả lời đơn giản là, không giống như MySQL, không thể xác định bộ ký tự tại cấp cột (hoặc bảng) . Latin1 cũng không phải là một bộ ký tự Oracle hợp lệ.

Các bộ ký tự nhất quán trên cơ sở dữ liệu và sẽ được chỉ định khi bạn tạo cơ sở dữ liệu. Bạn có thể tìm thấy nhân vật của mình bằng cách truy vấn NLS_DATABASE_PARAMETERS ,

select value
  from nls_database_parameters
 where parameter = 'NLS_CHARACTERSET'

Danh sách đầy đủ các bộ ký tự khả dụng có sẵn cho ​​11g r2 cho 9i hoặc bạn có thể truy vấn V $ NLS_VALID_VALUES .

Có thể sử dụng ALTER SESSION tuyên bố để đặt NLS_LANGUAGE hoặc NLS_TERRITORY , nhưng tiếc là bạn không thể làm điều này cho bộ ký tự. Tôi tin rằng điều này là do việc thay đổi ngôn ngữ sẽ thay đổi cách Oracle hiển thị dữ liệu được lưu trữ trong khi việc thay đổi bộ ký tự sẽ thay đổi cách Oracle lưu trữ dữ liệu.

Khi hiển thị dữ liệu, tất nhiên bạn có thể chỉ định bộ ký tự bắt buộc trong bất kỳ ứng dụng khách nào bạn đang sử dụng.

Di chuyển bộ ký tự không phải là một nhiệm vụ tầm thường và không nên được thực hiện nhẹ nhàng.

Một lưu ý nhỏ là tại sao bạn lại cố gắng sử dụng Latin 1? Sẽ bình thường hơn nếu thiết lập một cơ sở dữ liệu mới trong một cái gì đó như UTF-8 (còn được gọi là AL32UTF8 - không sử dụng UTF8 ) hoặc UTF-16 để bạn có thể lưu trữ dữ liệu nhiều byte một cách hiệu quả. Ngay cả khi bạn không cần nó bây giờ, bạn nên cố gắng - không có gì đảm bảo trong cuộc sống - để chứng minh cơ sở dữ liệu của bạn trong tương lai mà không cần phải di chuyển trong tương lai.

Nếu bạn đang tìm cách chỉ định các bộ ký tự khác nhau cho các cột khác nhau trong cơ sở dữ liệu thì tùy chọn tốt hơn sẽ là xác định xem yêu cầu này có thực sự cần thiết hay không và cố gắng loại bỏ nó. Nếu điều đó chắc chắn là cần thiết thì cách tốt nhất của bạn có thể là sử dụng một bộ ký tự là bộ siêu của tất cả các bộ ký tự tiềm năng. Sau đó, có một số loại ràng buộc kiểm tra giới hạn cột ở các giá trị hex cụ thể. Tôi không khuyên bạn nên làm điều này chút nào, khả năng mắc sai lầm là rất lớn và nó cực kỳ phức tạp. Hơn nữa, các bộ ký tự khác nhau hiển thị các giá trị hex khác nhau theo cách khác nhau. Ngược lại, điều này có nghĩa là bạn cần phải thực thi để một cột được hiển thị bằng một ký tự cụ thể, điều này là không thể vì nó nằm ngoài phạm vi của cơ sở dữ liệu.

1. Tôi muốn biết tình hình




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Sql Loader ORA-01722:số không hợp lệ khi tải tệp CSV với phần cuối dòng Windows

  2. Tôi không thể sử dụng biến ràng buộc trong datagrip

  3. ORACLE - tìm kết quả cụ thể bên trong LOOP (HOẶC TƯƠNG TỰ)

  4. Tôi có thể cài đặt JDK 1.6 trên JDK 1.3 mặc định của cơ sở dữ liệu Oracle không?

  5. DML và Xử lý ngoại lệ - Oracle