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

Hàm RTRIM () trong Oracle

Trong Oracle, RTRIM() hàm cho phép bạn cắt phần bên phải của một chuỗi. Theo mặc định, nó cắt bớt khoảng trắng, nhưng bạn có thể tùy chọn chỉ định một ký tự hoặc các ký tự khác để cắt.

Cú pháp

Cú pháp như sau:

RTRIM(char [, set ])

Ở đâu char set có thể là bất kỳ kiểu dữ liệu nào CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB hoặc NCLOB .

RTRIM xóa khỏi phần cuối bên phải của char tất cả các ký tự có trong set . Nếu bạn không chỉ định set , sau đó nó được đặt mặc định là một ô trống duy nhất.

Ví dụ

Đây là một ví dụ:

SELECT RTRIM('Cat                 ')
FROM DUAL;

Kết quả:

   RTRIM('CAT') 
_______________ 
Cat            

Ở đây, tôi không chỉ định ký tự / s nào cần cắt và do đó, mỗi ô trống đơn lẻ đã được cắt khỏi phần bên phải của chuỗi.

Không dễ để thấy tác dụng của ví dụ trên.

Dưới đây là một ví dụ khác, với chuỗi được nối với một chuỗi khác, trong khi so sánh kết quả với chuỗi ban đầu (không bị cắt):

SELECT 'Cat     ' || 'Food'
FROM DUAL
UNION ALL
SELECT RTRIM('Cat     ') || 'Food'
FROM DUAL;

Kết quả:

   'CAT'||'FOOD' 
________________ 
Cat     Food     
CatFood         

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

Trong ví dụ này, tôi chỉ định một ký tự để cắt. Điều này giúp bạn dễ dàng nhìn thấy hiệu ứng hơn:

SELECT RTRIM('...Cat...', '.')
FROM DUAL;

Kết quả:

   RTRIM('...CAT...','.') 
_________________________ 
...Cat                    

Vì vậy, chúng ta có thể thấy rằng nhân vật đã được cắt tỉa từ phía bên phải chứ không phải bên trái. Để cắt mặt trái, hãy sử dụng LTRIM() hoặc TRIM() .

Lưu ý rằng RTRIM() chỉ cắt / s ký tự trong tập hợp cho đến khi có một ký tự không có trong tập hợp. Đây là một ví dụ về ý tôi muốn nói:

SELECT RTRIM('Cat...B...', '.')
FROM DUAL;

Kết quả:

   RTRIM('CAT...B...','.') 
__________________________ 
Cat...B                   

Tuy nhiên, nếu chúng ta bao gồm B trong tập hợp, sau đó chúng tôi nhận được một kết quả khác:

SELECT RTRIM('Cat...B...', '.B')
FROM DUAL;

Kết quả:

   RTRIM('CAT...B...','.B') 
___________________________ 
Cat                         

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

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

SELECT 
    country_name,
    RTRIM(country_name, 'an') AS Trimmed
FROM countries
FETCH FIRST 5 ROWS ONLY;

Kết quả:

   COUNTRY_NAME     TRIMMED 
_______________ ___________ 
Argentina       Argenti     
Australia       Australi    
Belgium         Belgium     
Brazil          Brazil      
Canada          Canad       

Giá trị rỗng

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

SET NULL 'null';

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

Kết quả:

   RTRIM(NULL,3)    RTRIM('CAT',NULL)    RTRIM(NULL,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.

Cắt bỏ chuỗi trống

Chuyển một chuỗi trống làm đối số thứ hai dẫn đến null :

SET NULL 'null';

SELECT RTRIM('Cat   ', '')
FROM DUAL;

Kết quả:

   RTRIM('CAT','') 
__________________ 
null              

Nhưng việc thêm một khoảng trắng vào chuỗi trống sẽ thay đổi điều đó và cắt bớt bất kỳ khoảng trống nào từ bên phải của chuỗi:

SELECT RTRIM('Cat ', ' ')
FROM DUAL;

Kết quả:

   RTRIM('CAT','') 
__________________ 
Cat               

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

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

SELECT RTRIM()
FROM DUAL;

Kết quả:

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

Kết quả:

Error starting at line : 1 in command -
SELECT RTRIM('Cat', 1, '>')
FROM DUAL
Error at Command Line : 1 Column : 8
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. ORA-03113:phần cuối của tệp trên kênh liên lạc

  2. Sự khác biệt giữa ký hiệu cộng (+) của Oracle và ký hiệu ansi JOIN?

  3. Điền mục cây với nhóm bản ghi trong các biểu mẫu Oracle

  4. Làm thế nào để biết Oracle Client đã cài đặt là 32 bit hay 64 bit?

  5. Lấy tên của thủ tục hoặc hàm gọi trong Oracle PL / SQL