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

Nếu chúng ta có bộ ký tự US7ASCII tại sao nó cho phép chúng ta lưu trữ các ký tự không phải ascii?

Nó hoạt động vì cả hai điều kiện sau đều đúng:

  • Bộ ký tự ứng dụng khách bằng với bộ ký tự cơ sở dữ liệu của bạn.
  • Bộ ký tự cho phép bất kỳ giá trị byte nào

Bộ ký tự cơ sở dữ liệu của bạn và bộ ký tự máy khách của bạn được đặt thành US7ASCII . Trong trường hợp như vậy, từng dữ liệu được ghi / đọc từng cái một mà không có bất kỳ chuyển đổi nào, tức là các byte bạn gửi được ghi chính xác vào cơ sở dữ liệu. Có thể bạn chưa đặt NLS_LANG ở phía máy khách của bạn nhưng Oracle mặc định nó thành AMERICAN_AMERICA.US7ASCII .

US7ASCII là một mã hóa 7-bit. Tôi giả sử một ứng dụng ASCII thuần túy (có thể khá khó tìm) sẽ chỉ bỏ qua bit thứ 8 được lưu trữ trong kiến ​​trúc 8 Bit. Các bộ ký tự khác, ví dụ:AL32UTF8 không cho phép mỗi giá trị byte. Trong trường hợp này, các ký tự như vậy sẽ được thay thế bằng trình giữ chỗ, ví dụ:¿ hoặc ? .

Lưu ý, bạn đặt bộ ký tự ứng dụng khách của mình thành US7ASCII mà rất có thể là không đúng. Đặt nó đúng thành bộ ký tự được ứng dụng của bạn sử dụng, sau đó đặt ° sẽ được thay thế.

Trong trường hợp bạn sử dụng SQL * Plus, hãy kiểm tra mã bảng điều khiển bằng lệnh chcp , tương ứng. locale charmap . Đặt NLS_LANG của bạn biến môi trường phù hợp trước khi bạn bắt đầu sqlplus.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PIVOT dựa trên Oracle với nhiều nhóm cột

  2. Toán tử Oracle (+)

  3. Xác thực chạy trên tất cả các hàng khi tab Oracle ADF

  4. Ứng dụng Qt gặp sự cố khi sử dụng trình điều khiển ODBC (macOS)

  5. Sử dụng các biến R cho một truy vấn SQL