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

Hàm NLS_UPPER () trong Oracle

Trong Oracle, NLS_UPPER() hàm trả về đối số của nó với tất cả các chữ cái được viết hoa.

Nó tương tự như UPPER() , 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_UPPER(char [, 'nlsparam' ])

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

'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_UPPER('coffee time') AS Result
FROM DUAL;

Kết quả:

        RESULT 
______________ 
COFFEE TIME   

Điều tương tự cũng áp dụng khi đối số sử dụng trường hợp hỗn hợp:

SELECT NLS_UPPER('Coffee Time') AS Result
FROM DUAL;

Kết quả:

        RESULT 
______________ 
COFFEE TIME   

Và nếu đối số đã là chữ hoa, thì kết quả sẽ giống với đầu vào:

SELECT NLS_UPPER('COFFEE TIME') AS Result
FROM DUAL;

Kết quả:

        RESULT 
______________ 
COFFEE TIME   

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_UPPER('fasilə') AS r1,
    NLS_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI') AS r2
FROM DUAL;

Kết quả:

       R1        R2 
_________ _________ 
FASILƏ    FASİLƏ   

Lưu ý rằng cột thứ hai sử dụng chữ hoa có dấu chấm I , tuân theo hệ thống chữ viết Azerbaijan.

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_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI')) 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à các quy tắc dẫn xuất đối chiếu cho chức năng này.

Giá trị rỗng

Chuyển null trả về null :

SELECT
    NLS_UPPER(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
    NLS_UPPER('fasilə', null) AS r2,
    NLS_UPPER(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_UPPER() mà không chuyển bất kỳ đối số nào sẽ trả về lỗi:

SELECT NLS_UPPER()
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT NLS_UPPER()
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 quá nhiều đối số dẫn đến lỗi:

SELECT NLS_UPPER('coffee', 'NLS_SORT = XAZERBAIJANI', 'time')
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT NLS_UPPER('coffee', 'NLS_SORT = XAZERBAIJANI', 'time')
FROM DUAL
Error at Command Line : 1 Column : 55
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. Làm thế nào tôi có thể chọn hồ sơ CHỈ từ ngày hôm qua?

  2. Chuyển danh sách các số nguyên từ C # vào quy trình được lưu trữ của Oracle

  3. Làm thế nào để gọi một proc được lưu trữ từ bao phấn và sửa đổi con trỏ được trả về?

  4. Làm cách nào để khai báo và sử dụng các biến trong PL / SQL giống như trong T-SQL?

  5. Hàm RPAD () trong Oracle