Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Panjang sebenarnya dari sebuah String, seperti yang terlihat oleh Oracle

Anda dapat, seperti yang telah ditunjukkan orang lain, mengonversi string Java ke array byte menggunakan set karakter database Oracle dan kemudian mendapatkan panjangnya dalam byte dari itu. Namun, itu bergantung pada mengetahui apa set karakter database Anda-- database yang berbeda akan memiliki set karakter yang berbeda yang akan menghasilkan panjang byte yang berbeda untuk string yang sama dalam set karakter yang berbeda.

Dengan asumsi bahwa database Anda menggunakan set karakter lebar variabel seperti UTF-8 (NLS_CHARACTERSET dari AL32UTF8), Anda juga dapat mendeklarasikan kolom di Oracle berdasarkan panjang karakter daripada panjang byte. Itu dapat menyederhanakan kode Anda karena Anda bisa memeriksa panjang karakter string Anda. Ini juga menyederhanakan komunikasi bagi pengguna. Biasanya sulit bagi pengguna untuk memahami mengapa suatu bidang terkadang dapat menyimpan 5 karakter sementara di lain waktu ia menolak string 2 karakter tergantung pada karakter yang merupakan bagian dari string (1 karakter dalam rangkaian karakter UTF-8 dapat memerlukan hingga 3 byte penyimpanan).

Secara default, saat Anda mendeklarasikan kolom

CREATE TABLE foo (
  col_name VARCHAR2(5)
);

yang memberitahu Oracle untuk mengizinkan hingga 5 byte data. Namun, jika Anda ingin mengizinkan 5 karakter data terlepas dari jumlah byte, Anda dapat menggunakan semantik panjang karakter

CREATE TABLE foo (
  col_name VARCHAR2(5 CHAR)
);

Dengan asumsi Anda ingin melakukan ini untuk semua tabel Anda saat menjalankan DDL, Anda juga dapat mengatur nls_length_semantics di tingkat sesi sebelum menjalankan DDL Anda

ALTER SESSION SET nls_length_semantics = CHAR;

CREATE TABLE foo (
  col_name VARCHAR2(5)
);

membuat tabel dengan kolom yang memungkinkan hingga 5 karakter data.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menemukan kolom yang digunakan dalam kueri dinamis tanpa menjalankan seluruh kueri

  2. Single SQL SELECT Mengembalikan beberapa baris dari satu baris tabel

  3. Mendapatkan Kesalahan Hubungkan ke Oracle menggunakan Python Di Mac - Tidak dapat menemukan perpustakaan Klien Oracle

  4. Memotong tabel dalam prosedur tersimpan

  5. Bagaimana Cara Menggunakan Tabel Sementara Global dalam Prosedur Oracle?