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

Fungsi NLS_COLLATION_NAME() di Oracle

Di Oracle Database, NLS_COLLATION_NAME() fungsi mengembalikan nama susunan yang diberikan, berdasarkan ID-nya. Anda meneruskan ID pemeriksaan saat memanggil fungsi, dan mengembalikan nama pemeriksaan.

Sintaks

Sintaksnya seperti ini:

NLS_COLLATION_NAME(expr [, flag ])

Dimana expr adalah ID pemeriksaan dari jenis NUMBER .

flag argumen adalah argumen opsional yang hanya berlaku untuk kumpulan Unicode Collation Algorithm (UCA). Ini menentukan apakah fungsi harus mengembalikan bentuk pendek atau bentuk panjang dari nama susunan.

flag argumen dapat berupa salah satu dari berikut ini:

Tandai Deskripsi
'S' atau 's' Mengembalikan bentuk pendek dari nama susunan.
'L' atau 'l' Mengembalikan bentuk panjang dari nama susunan.

Nilai default untuk bendera ini adalah 'L' .

Contoh

Berikut ini contoh dasarnya:

SELECT NLS_COLLATION_NAME(70)
FROM DUAL;

Hasil:

XAZERBAIJANI

Berikut beberapa contoh lainnya:

SELECT 
    NLS_COLLATION_NAME(4112) AS "1",
    NLS_COLLATION_NAME(4116) AS "2"
FROM DUAL;

Hasil:

          1             2 
___________ _____________ 
FRENCH_M    CANADIAN_M   

Bendera Bentuk Panjang/Pendek

Seperti yang telah disebutkan, kita dapat memberikan tanda opsional untuk menentukan apakah mengembalikan bentuk pendek atau bentuk panjang dari nama susunan.

SELECT 
    NLS_COLLATION_NAME(208920, 'L') AS "Long",
    NLS_COLLATION_NAME(208920, 'S') AS "Short"
FROM DUAL;

Hasil:

                                      Long           Short 
__________________________________________ _______________ 
UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN    UCA0620_THAI   

Nilai default untuk bendera ini adalah 'L' . Jadi jika kita menghilangkan bendera, bentuk panjang dikembalikan:

SELECT 
    NLS_COLLATION_NAME(208920) AS "Default"
FROM DUAL;

Hasil:

                                   Default 
__________________________________________ 
UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN   

Bendera ini hanya berlaku untuk susunan Algoritma Kolasi Unicode (UCA).

Jika kami menerapkan bendera ke susunan non-UCA, kami tidak melihat perbedaan:

SELECT 
    NLS_COLLATION_NAME(4112, 'L') AS "1",
    NLS_COLLATION_NAME(4112, 'S') AS "2"
FROM DUAL;

Hasil:

          1           2 
___________ ___________ 
FRENCH_M    FRENCH_M   

Pengumpulan Tidak Valid

Melewati nama pemeriksaan yang tidak valid menghasilkan null :

SET NULL 'null';
SELECT NLS_COLLATION_NAME(4113)
FROM DUAL;

Hasil:

null

Secara default, SQLcl dan SQL*Plus mengembalikan ruang kosong setiap kali null terjadi sebagai akibat dari SQL SELECT penyataan.

Namun, Anda dapat menggunakan SET NULL untuk menentukan string berbeda yang akan dikembalikan. Di sini saya menetapkan bahwa string null harus dikembalikan.

Argumen Null

Melewati null mengembalikan null :

SET NULL 'null';
SELECT NLS_COLLATION_NAME(null)
FROM DUAL;

Hasil:

null

Jumlah Argumen Salah

Memanggil fungsi tanpa meneruskan argumen apa pun menghasilkan kesalahan:

SELECT NLS_COLLATION_NAME()
FROM DUAL;

Hasil:

Error starting at line : 1 in command -
SELECT NLS_COLLATION_NAME()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"
*Cause:    
*Action:

Dan meneruskan terlalu banyak argumen juga menghasilkan kesalahan:

SELECT NLS_COLLATION_NAME(4112, 'S', 'L')
FROM DUAL;

Hasil:

Error starting at line : 1 in command -
SELECT NLS_COLLATION_NAME(4112, 'S', 'L')
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*Cause:    
*Action:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa saya sepertinya tidak bisa memaksa Oracle 11g untuk mengkonsumsi lebih banyak CPU untuk satu kueri SQL?

  2. Oracle 11g mendapatkan semua kejadian yang cocok dengan ekspresi reguler

  3. Bagaimana cara menampilkan kesalahan di sqlplus

  4. Menggunakan setDate di PreparedStatement

  5. perbedaan kriteria pencarian antara Suka vs Berisi () di Oracle