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

NLS_INITCAP () Hàm trong Oracle

Trong Oracle, NLS_INITCAP() hàm trả về đối số của nó với chữ cái đầu tiên của mỗi từ là chữ hoa và tất cả các chữ cái khác ở dạng chữ thường.

Tuy nhiên, cách viết hoa thực tế sẽ phụ thuộc vào đối chiếu được sử dụng. Ví dụ:nó có thể dẫn đến nhiều hơn chữ cái đầu tiên được viết hoa.

Nó tương tự như INITCAP() , ngoại trừ việc nó chấp nhận đối số thứ hai cho phép bạn chỉ định đối chiếu. Đối chiếu xử lý các yêu cầu ngôn ngữ đặc biệt cho các chuyển đổi trường hợp.

Cú pháp

Cú pháp như sau:

NLS_INITCAP(char [, 'nlsparam' ])

Trong đó cả char 'nlsparam' có thể là bất kỳ kiểu dữ liệu nào CHAR , VARCHAR2 , NCHAR hoặc NVARCHAR2 .

'nlsparam' đối số có thể có dạng sau:

'NLS_SORT = sort'

Vị trí sort là một đối chiếu được đặt tên.

Nếu bạn bỏ qua đối số này, đối chiếu đã xác định của hàm sẽ được sử dụng.

Ví dụ

Dưới đây là một ví dụ đơn giản để chứng minh:

SELECT NLS_INITCAP('the lake')
FROM DUAL;

Kết quả:

   NLS_INITCAP('THELAKE') 
_________________________ 
The Lake                 

Chỉ định một đối chiếu

Dưới đây là một ví dụ chứng minh cách chỉ định đối chiếu có thể thay đổi kết quả:

SELECT 
    NLS_INITCAP('het ijsselmeer') AS c1,
    NLS_INITCAP('het ijsselmeer', 'NLS_SORT = XDutch') AS c2
FROM DUAL;

Kết quả:

               C1                C2 
_________________ _________________ 
Het Ijsselmeer    Het IJsselmeer    

Lưu ý rằng trong cột thứ hai, hai chữ cái đầu tiên của IJsselmeer được viết hoa, trong khi cột đầu tiên chỉ viết hoa chữ cái đầu tiên.

Trong tiếng Hà Lan, ij được coi là một chữ cái và do đó, cả hai ký tự đều được viết hoa khi chúng xuất hiện ở đầu câu hoặc tên riêng.

Lưu ý rằng NLS_SORT chỉ ghi đè đối chiếu của đối số đầu tiên tại thời điểm thực thi. Do đó, câu lệnh sau trả về đối chiếu của đối số đầu tiên, không phải đối số thứ hai:

SELECT
    COLLATION(NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDutch')) AS Collation
FROM DUAL;

Kết quả:

        COLLATION 
_________________ 
USING_NLS_COMP   

Chủ đề của collations có thể khá phức tạp. Xem Phụ lục C trong Hướng dẫn hỗ trợ toàn cầu hóa cơ sở dữ liệu Oracle để biết các quy tắc xác định đối chiếu và quy tắc dẫn xuất đối chiếu cho chức năng này.

Điều gì sẽ xảy ra nếu tôi vượt qua tất cả các chữ cái UPPERCASE?

Việc chuyển tất cả các chữ cái viết hoa không làm thay đổi kết quả:

SELECT 
    NLS_INITCAP('HET IJSSELMEER', 'NLS_SORT = XDutch') AS Result
FROM DUAL;

Kết quả:

           RESULT 
_________________ 
Het IJsselmeer    

Giá trị rỗng

Nếu bất kỳ đối số nào là null , kết quả là null :

SET NULL 'null';

SELECT 
    NLS_INITCAP('het IJsselmeer', null) AS r1,
    NLS_INITCAP(null, 'NLS_SORT = XDutch') AS r2,
    NLS_INITCAP(null, null) AS r3
FROM DUAL;

Kết quả:

     R1      R2      R3 
_______ _______ _______ 
null    null    null    

Theo mặc định, SQLcl và SQL * Plus trả về một khoảng trống bất cứ khi nào null xảy ra do một SELECT trong SQL tuyên bố.

Tuy nhiên, bạn có thể sử dụng SET NULL để chỉ định một chuỗi khác được trả về. Ở đây tôi đã chỉ định rằng chuỗi null nên được trả lại.

Số lượng đối số không chính xác

Gọi NLS_INITCAP() mà không chuyển bất kỳ đối số nào sẽ trả về lỗi:

SELECT NLS_INITCAP()
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT NLS_INITCAP()
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:

Và việc chuyển sai số đối số dẫn đến lỗi:

SELECT NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDUTCH', 3)
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDUTCH', 3)
FROM DUAL
Error at Command Line : 1 Column : 59
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. Ví dụ về Oracle UTL_HTTP Post Multipart / Form-Data (JSON &ZIP)

  2. Tạo chuỗi UUID không có REGEXP_REPLACE và PL / SQL

  3. Sự khác biệt ngầm định của luồng dữ liệu CAST so với ssis

  4. Ngày mới cho các kỳ thi cấp chứng chỉ miễn phí trên Oracle Cloud và Cơ sở dữ liệu tự trị

  5. RR so với YY trong Oracle