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

Hàm LPAD () trong Oracle

Trong Oracle, LPAD() hàm cho phép bạn đệm phần bên trái của chuỗi bằng một ký tự nhất định, thành một số ký tự được chỉ định.

Cách thức hoạt động là bạn chỉ định chuỗi kết quả dài bao nhiêu. Nếu chuỗi gốc ngắn hơn, ký tự đệm sẽ điền vào khoảng trống còn lại.

Cú pháp

Cú pháp như sau:

LPAD(expr1, n [, expr2 ])

Ở đâu:

  • expr1 expr2 có thể là bất kỳ kiểu dữ liệu nào CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB hoặc NCLOB .
  • n là một NUMBER số nguyên hoặc một giá trị có thể được chuyển đổi hoàn toàn thành NUMBER số nguyên.

Hàm trả về expr1 , được đệm bên trái thành chiều dài n ký tự với chuỗi ký tự trong expr2 .

Nếu expr2 bị bỏ qua, ký tự đệm là một ô trống duy nhất.

Ví dụ

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

SELECT LPAD('Cat', 5)
FROM DUAL;

Kết quả:

   LPAD('CAT',5) 
________________ 
  Cat           

Lưu ý rằng số được cung cấp là tổng chiều rộng của chuỗi kết quả - không phải số lượng đệm.

Đây lại là chuỗi khi so sánh với chuỗi ban đầu (không đệm):

SELECT LPAD('Cat', 5)
FROM DUAL
UNION ALL
SELECT 'Cat'
FROM DUAL;

Kết quả:

   LPAD('CAT',5) 
________________ 
  Cat            
Cat             

Chỉ định một ký tự

Trong ví dụ này, tôi chỉ định một ký tự để sử dụng cho phần đệm:

SELECT LPAD('Cat', 5, '>')
FROM DUAL;

Kết quả:

   LPAD('CAT',5,'>') 
____________________ 
>>Cat               

Padding nhỏ hơn chuỗi gốc

Nếu đối số thứ hai nhỏ hơn chuỗi ban đầu, thì không có khoảng đệm nào được thêm vào và chuỗi ban đầu được rút ngắn thành số ký tự được chỉ định:

SELECT LPAD('Cat', 2)
FROM DUAL;

Kết quả:

   LPAD('CAT',2) 
________________ 
Ca              

Ví dụ về cơ sở dữ liệu

Dưới đây là ví dụ về cách đệm phần bên trái của các giá trị trong cột cơ sở dữ liệu:

SELECT 
    country_name,
    LPAD(country_name, 12, '.') AS Padded
FROM countries
FETCH FIRST 5 ROWS ONLY;

Kết quả:

   COUNTRY_NAME          PADDED 
_______________ _______________ 
Argentina       ...Argentina    
Australia       ...Australia    
Belgium         .....Belgium    
Brazil          ......Brazil    
Canada          ......Canada    

Giá trị rỗng

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

SET NULL 'null';

SELECT 
    LPAD(null, 3),
    LPAD('Cat', null),
    LPAD('Cat', 3, null)
FROM DUAL;

Kết quả:

   LPAD(NULL,3)    LPAD('CAT',NULL)    LPAD('CAT',3,NULL) 
_______________ ___________________ _____________________ 
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

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

SELECT LPAD()
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT LPAD()
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 LPAD('Cat', 1, '>', 2)
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT LPAD('Cat', 1, '>', 2)
FROM DUAL
Error at Command Line : 1 Column : 28
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. Bắt lỗi - ORA-01858:một ký tự không phải số được tìm thấy ở vị trí số được mong đợi

  2. Làm thế nào để truy vấn tên cơ sở dữ liệu trong Oracle SQL Developer?

  3. Những mạng lưới an toàn

  4. ROWID (oracle) - bất kỳ công dụng nào cho nó?

  5. Hàm LOCALTIMESTAMP () trong Oracle