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
và '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: