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

Hàm NLS_LOWER () trong Oracle

Trong Oracle, NLS_LOWER() hàm trả về đối số của nó với tất cả các chữ cái ở dạng chữ thường.

Nó tương tự với LOWER() , 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_LOWER(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_LOWER('HOMER SYMPTOM') AS Result
FROM DUAL;

Kết quả:

          RESULT 
________________ 
homer symptom   

Đ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_LOWER('Homer Symptom') AS Result
FROM DUAL;

Kết quả:

          RESULT 
________________ 
homer symptom   

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

SELECT NLS_LOWER('homer symptom') AS Result
FROM DUAL;

Kết quả:

          RESULT 
________________ 
homer symptom   

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_LOWER('BALIQ') AS r1,
    NLS_LOWER('BALIQ', 'NLS_SORT = XAZERBAIJANI') AS r2
FROM DUAL;

Kết quả:

      R1       R2 
________ ________ 
baliq    balıq   

Lưu ý rằng cột thứ hai sử dụng chữ thường không 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_LOWER('BALIQ', '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à 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_LOWER(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
    NLS_LOWER('BALIQ', null) AS r2,
    NLS_LOWER(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_LOWER() mà không chuyển bất kỳ đối số nào sẽ trả về lỗi:

SELECT NLS_LOWER()
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT NLS_LOWER()
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_LOWER('Homer', 'NLS_SORT = XAZERBAIJANI', 'Symptom')
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT NLS_LOWER('Homer', 'NLS_SORT = XAZERBAIJANI', 'Symptom')
FROM DUAL
Error at Command Line : 1 Column : 54
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 để lấy ngày hiện tại trong PL / SQL?

  2. Tổng hợp dữ liệu bằng các hàm nhóm (nhóm theo oracle)

  3. Cách tạo người dùng trong Oracle 11g và cấp quyền

  4. Chương trình PL / SQL để in chi tiết nhân viên

  5. Lỗi khi sử dụng oracle.dataaccess.dll